untiy 3d ShaderLab_第9章_1_平面阴影(二) 点光源对平面的投影
2016-09-28 15:23
323 查看
9.2点光源对平面的投影
光源的方向矢量
上一节是平行光的情形,点光源也是类似的,对于通过使用WorldSpaceLightDir()方法来计算光源方向来说,就完全一样了。
如图,红色的是平行光的投影,绿色的是场景中点光源的投影。
光源的方向矢量
上一节是平行光的情形,点光源也是类似的,对于通过使用WorldSpaceLightDir()方法来计算光源方向来说,就完全一样了。
pass { Tags { "LightMode" = "ForwardAdd" } Blend DstColor SrcColor Offset -2,-1 CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4x4 _World2Ground; float4x4 _Ground2World; float4 vert(float4 vertex: POSITION) : SV_POSITION { float3 litDir; litDir=normalize(WorldSpaceLightDir(vertex)); litDir=mul(_World2Ground,float4(litDir,0)).xyz; float4 vt; vt= mul(_Object2World, vertex); vt=mul(_World2Ground,vt); vt.xz=vt.xz-(vt.y/litDir.y)*litDir.xz; vt.y=0; vt=mul(_Ground2World,vt);//将计算结果返回到世界坐标 vt=mul(_World2Object,vt); return mul(UNITY_MATRIX_MVP, vt); } float4 frag(void) : COLOR { return float4(0,0.6,0,1);//绿色的阴影 } ENDCG }
如图,红色的是平行光的投影,绿色的是场景中点光源的投影。
相关文章推荐
- untiy 3d ShaderLab_第9章_1_平面阴影(三) 点光源对平面的投影
- untiy 3d ShaderLab_第9章_3_球体阴影(三) 点光源对球体的投影
- untiy 3d ShaderLab_第9章_1_平面阴影(一)
- untiy 3d ShaderLab_第9章_2_球体阴影(一) 平行光对球体的投影
- untiy 3d ShaderLab_第9章_2_球体阴影(二) 阴影的淡入/淡出
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_2_顶点照明和Unity存放光源的第一种方式
- untiy 3d ShaderLab_第7章_ Forward渲染路径_2_Forward渲染路径下的重要光源
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_3_顶点照明和Unity存放光源的第二种方式
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_4_顶点照明和Unity存放光源的第三种方式
- untiy 3d ShaderLab_第7章_ Forward渲染路径_3_重要光源在ForwardAdd内的执行
- untiy 3d ShaderLab_第8章_4_ 单光照贴图在Deferred 渲染路径下的实时阴影
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_4_顶点照明和Unity存放光源的第三种方式
- 3D光照阴影 平面阴影矩阵推导及代码实现
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_2_Unity中Shader的3种形态
- untiy 3d ShaderLab_第8章_ 基于光照贴图的烘焙照明
- untiy 3d ShaderLab_第8章_ 基于光照贴图的烘焙照明
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_3_Shader的数据接口:属性和 uniform变量
- untiy 3d ShaderLab_第4章_基本的光照模型
- Ogre_初学指导_5_"场景元素:平面、光源、阴影、摄像机、视口"
- untiy 3d ShaderLab_第5章_第一个被执行的Pass_1_不同LightMode 被选择的顺序