Unity3D ShaderLab Half Lambert光照模型】的更多相关文章

Half Lambert光照模型 说到Half Lambert ,就不得不说反恐精英了,在制作反恐精英的过程中,为了防止物体的背面光丢失而显得太过平面化,就用了这个称之为half lambert的技术 .但是这个half lambert的光照模型是没有任何特殊物理原理,仅仅是增强玩家视觉的一个简单的光照模型例子. 具体的介绍可以参见Valve的wiki: https://developer.valvesoftware.com/wiki/Half_Lambert 左边是普通的Lambert光照模型…
Unity3D ShaderLab 漫反射卷积光照模型 漫反射卷积[Diffuse convolution]是一个模糊立方体的过程,它保留了立方图的整体光照强度,只模糊了细节. 这种效果在我们要活得一个更具全局光照表面效果的时候非常有用. 为了实现这种效果,我们需要创建一个卷积运算的立方图.比如ATI的工具制作CubeMapGen. 下载地址: http://developer.amd.com/tools-and-sdks/archive/legacy-cpu-gpu-tools/cubemap…
这一篇,我们来创建一个车辆喷漆的光照模型.首先就是准备场景,新建Shader & Material. 过程比较简单,直接看完成的代码吧: Shader "91YGame/CarOutLight" { Properties { _MainTint(,,,) _MainTex ("Base (RGB)", 2D) = "white" {} _SpecularColor(,,,) _SpecPower())= _RelfCube("R…
Unity3D ShaderLab 静态贴图光照模型 其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果.所以这类着色器的缺点就是不会随着光源变化效果. 接下来,我们开始创建,首先通过软件MaCrea来制作我们的2D光照贴图,MaCrea软件 通过该软件可以快速制作一个完整的发光球体平面图. 软件地址:http://pan.baidu.com/s/1bnD7wkv 软件视频教学地址:http://pan…
接着上一篇BasicMyDiffuse的代码来说,这次要说明的就是自定义的光照模型,Ctrl+D>BasicMyDiffuse. 1.>//#pragma surface surf Lambert::这个是默认的光照模型 2.>#pragma surface surf CusDiffuse //自己定义的光照模型CusDiffuse; 3.>在SubShader 中加入光照模型函数: inline float4 LightingCusDiffuse(SurfaceOutput s,…
Unity3D ShaderLab 基础的高光实现 关于高光: 在一个物体表面的高光属性就是为了描述它是如何表现光泽.这种类型的效果在着色器的世界中通常称为视点相关效果. 之所以这样说,是因为为了实现着色器逼真的镜面效果,我们需要考虑相机或者观察者面向物体表面的方向,然而高光还需要一个元素来实现视觉的真实效果---光的入射方向! 通过结合2个方向,我们可以在物体的表面得到一个热点或者说亮点,它位于视角方向和光源方向中间位置.这种中间位置的方向可以成为半角矢量,我们通过他可以实现高光效果和镜面等.…
Unity3D ShaderLab BRDF模拟 在上一篇,说到了使用渐变纹理着色,使用一个值来控制纹理的uv坐标,但是这也就表示我们只能得到一个线性的光照效果. 那么我们能不能通过观察方向的向量结合光照方向形成双向的反射变化呢,既然说到这里,肯定是可以做到的, 这就是我们的BRDF effect,我们可以简单的把BRDF看作为入射光在不透明物体表面同时反射到观察方向和出射光方向. BRDF(Bidirectional Reflectance Distribution Function具体的内容…
Unity3D ShaderLab 使用渐变纹理着色 在我们编写着色器的过程中,还可以通过渐变纹理来控制漫反射的光照颜色.这种做法同样在VALVE的军团要塞2中及其流行. 前期,请准备一个渐变色的图片.再把我们之前的Hlf Lambert的代码稍加修改. 1:Properties添加GUI上的图片纹理属性>_RampTex ("Ramp Texture", 2D) = "" 2:在SubShader中申明图片纹理>sampler2D _RampTex;…
Unity3D ShaderLab 修改渲染队列进行深度排序 为了更深刻的理解透明度,我们还需要学习一下深度排序,简单来说就是物体被渲染的先后顺序. Unity允许我们通过代码来控制某个特定物体渲染到屏幕的顺序.这个做法类似于photoshop中图层的概念. 开始之前,准备工作还是新建Shader Material,准备测试场景.为了对比 是需要使用2个材质球的. 打开我们的shader,稍微编辑一下即可看到效果.过程简单如下: Shader "91YGame/DepthSort" {…
Unity3D ShaderLab 透明裁剪着色器 上一篇,我们介绍了使用Alpha实现透明的手法,其实Unity为我们的#pragma提供了另一种参数,是我们能做出更高效 简单的透明效果,也就是裁剪透明. 这种透明使用一个值来简单的控制某些特定的像素无需渲染到屏幕上,所以我们也可以通过他实现一个要么完全透明或完全不透的着色器. 我们即将利用灰度的值来控制材质的透明度. 准备工作还是新建Shader Material,一张灰度变化图.同样是分分钟完成的代码,请看完成: Shader "91YGa…