Light组件:http://game.ceeger.com/Components/class-Light.html
Render Mode 渲染模式:这灯光的重要性。这可能会影响照明的保真度和性能,请参阅下面的性能注意事项。包括:
Auto 自动:为桌面构建目标渲染的方法是根据附近的灯光的亮度和当前的质量设置( Quality Settings)在运行时确定。
Important 重要:灯光是逐个像素渲染。只用在一些非常重要的效果(比如玩家的车的车头灯)。
Not Important 不重要:灯光总是以最快的速度渲染。顶点/对象光模式
像素光照渲染得慢,但它能够实现一些顶点光照不能实现的效果。正规映射(Normal-mapping),灯光cookies(light cookies) 和实时阴影(realtime shadows)只能由像素光照渲染。
灯光有对渲染速度有非常大的影响——因此必须权衡前后照明质量和游戏速度。由于像素光照比顶点光照奢侈得多(更耗费资源),Unity将只在最亮的光逐个像素渲染。网页版(webplayer)和单机版(standalone)编译目标中,像素灯的实际数量可以质量设置( Quality Settings )进行设置。
光线以顶点光照或像素光照模式渲染。你可以通过渲染模式属性(Render Mode property)显式控制。默认情况下,Unity根据对象受到光影响的多少自动对光进行归类。
Camera组件:http://game.ceeger.com/Components/class-Camera.html
Rendering Path 渲染路径:定义什么绘制方法将被用于相机的选项。http://game.ceeger.com/Manual/RenderingPaths.html
Use Player Settings 使用玩家设置:在玩家设置(Player Settings.)相机使用哪个渲染路径。
Vertex Lit 顶点光照:所有被这个相机渲染的物体都将渲染成Vertex-Lit物体。
http://game.ceeger.com/Components/RenderTech-VertexLit.html
Forward 正向渲染:所有对象每材质渲染只渲染一次,和Unity 2.x中的标准一样。
http://game.ceeger.com/Components/RenderTech-ForwardRendering.html
Deferred Lighting 延迟照明:所有物体将在无光照的环境渲染一次,然后在渲染队列尾部将物体的光照一起渲染出来。
http://game.ceeger.com/Components/RenderTech-DeferredLighting.html
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Rendering Path(渲染路径): Edit/Project Settings/Player/Other Settings/Rendering Path
Pixel Light(像素光):Edit/Project Settings/Quality
Shader "Custom/Light" { Properties { } SubShader { Pass { Tags { "LightMode"="Vertex" } Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct vertOut { float4 pos:SV_POSITION; float4 color:COLOR; }; vertOut vert(appdata_base v) { vertOut o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.color = float4(1,0,0,1); return o; } float4 frag(vertOut i):COLOR { return i.color; } ENDCG } Pass { Tags { "LightMode"="ForwardBase" } Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct vertOut { float4 pos:SV_POSITION; float4 color:COLOR; }; vertOut vert(appdata_base v) { vertOut o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.color = float4(0,1,0,1); return o; } float4 frag(vertOut i):COLOR { return i.color; } ENDCG } Pass { Tags { "LightMode"="PrepassFinal" } Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct vertOut { float4 pos:SV_POSITION; float4 color:COLOR; }; vertOut vert(appdata_base v) { vertOut o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.color = float4(0,0,1,1); return o; } float4 frag(vertOut i):COLOR { return i.color; } ENDCG } } FallBack "Diffuse" }
LightMode 标签定义了Shader的光照模式,具体含义以后会在讲渲染管线时讲到。下面我们先简单了解一下有哪些光照模式可选,以及他们的具体作用: