shader常用函数

2020-06-30  本文已影响0人  Rayson

顶点着色器:

// 将坐标转换到裁剪空间
o.pos = UnityObjectToClipPos(vertex);

// 计算顶点的世界坐标
float3 worldPos = mul(_Object2World, vertex).xyz;

// 计算世界空间下的视角方向
float3 worldViewDir = normalize(UnityWorldSpaceViewDir(worldPos));

// 世界空间下的法线
float3 worldNormal = UnityObjectToWorldNormal(normal);

// 世界空间下的反射向量
o.worldRefl = reflect(-worldViewDir, worldNormal);

片段着色器

// 采样纹理并返回数据
fixed4 col = tex2D(_MainTex, i.uv);

// 使用反射向量采样默认的反射立体纹理(unity_SpecCube0)
half4 skyData = UNITY_SAMPLE_TEXCUBE(unity_SpecCube0, i.worldRefl);
// 解码cubemap的数据到具体显示的颜色
half3 skyColor = DecodeHDR (skyData, unity_SpecCube0_HDR);

上一篇 下一篇

猜你喜欢

热点阅读