日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8.平面阴影

發布時間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.平面阴影 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class CastShadow : MonoBehaviour {public Transform rec;//接受陰影的物體// Use this for initializationvoid Start () {GetComponent<Renderer>().sharedMaterial.SetMatrix("_World2Ground", rec.GetComponent<Renderer>().worldToLocalMatrix);GetComponent<Renderer>().sharedMaterial.SetMatrix("_Ground2World", rec.GetComponent<Renderer>().localToWorldMatrix);}void Update(){} } 這個腳本主要是為了設置需要接受陰影的地面的坐標系,如果沒有這個腳本,物體產生的陰影的坐標系是原始坐標系(0,0,0)

// shader,放在需要顯示陰影的對象上 Shader "Study/8_PlanarShadow" {Properties{_Instensity("Shininess", Range(2, 4)) = 2.1}SubShader{pass {Tags{ "LightMode" = "ForwardBase" }Material{ Diffuse(1,1,1,1) }Lighting On}Pass{Tags{ "LightMode" = "ForwardBase" }Blend DstColor SrcColorOffset -1,-1CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc"float4x4 _World2Ground;float4x4 _Ground2World;float _Instensity;struct v2f {float4 pos:SV_POSITION;float atten : TEXCOORD0;};v2f vert(float4 vertex:POSITION){float3 litDir;litDir = WorldSpaceLightDir(vertex);//世界空間主光照相對于當前物體的方向float4 litDir_4 = float4(litDir,0);litDir_4 = mul(_World2Ground, litDir_4);//光源方向轉換到接受陰影的平面空間litDir_4 = normalize(litDir_4);// 歸一float4 vt;vt = mul(_Object2World,vertex); //將當前物體轉換到世界空間vt = mul(_World2Ground,vt); // 將物體在世界空間的矩陣轉換到地面空間vt.xz = vt.xz - (vt.y / litDir_4.y)*litDir_4.xz;// 用三角形相似計算沿光源方向投射后的XZvt.y = 0;// 使陰影保持在接受平面上vt = mul(_Ground2World, vt); // 陰影頂點矩陣返回到世界空間vt = mul(_World2Object, vt); // 返回到物體的坐標v2f o;o.pos = mul(UNITY_MATRIX_MVP, vt);//輸出到裁剪空間o.atten = distance(vertex, vt) / _Instensity;// 根據物體頂點到陰影的距離計算衰減return o;}float4 frag(v2f i) :COLOR{return smoothstep(0,1,i.atten / 2);}ENDCG}} }
這個shader只是講解下平面陰影的產生原理,核心的原理就是通過三角形相似,根據光照方向將頂點投影到地面上。

其中第一個Pass是渲染物體本體,第二個Pass渲染陰影。渲染陰影的原理是將坐標系轉換成接受陰影的地面坐標系后,根據三角形相似,計算出物體頂點在x方向和z方向的投影坐標。


總結

以上是生活随笔為你收集整理的8.平面阴影的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。