1
它是Unity3D着色器的一部分。爲什麼不能直接乘(0.0,0.0,1.0),但必須使用o.normal = float3(0.0,0.0,1.0)?
我使用填充顏色的法線貼圖(128,128,255),所以它代表(0.0,0.0,1.0)。
我懷疑這爲什麼好?
void surf (Input IN, inout SurfaceOutput o)
{
float3 normals = UnpackNormal(tex2D(_NormalMap, IN.uv_NormalMap));
o.Normal = float3(0.0,0.0,1.0);
float2 litSphereUV;
litSphereUV.x = dot(IN.tan1, o.Normal);
litSphereUV.y = dot(IN.tan2, o.Normal);
half4 c = tex2D (_MainTex, litSphereUV*0.5+0.5);
o.Albedo = c.rgb * _MainTint;
o.Alpha = c.a;
}
這是錯的?
litSphereUV.x = dot(IN.tan1, (0.0,0.0,1.0));
litSphereUV.y = dot(IN.tan2, (0.0,0.0,1.0));
@anderas它的工作原理!非常感謝你!但爲什麼? –