我的网格上没有阴影,因为我的着色器Unity3D出现了错误

时间:2015-07-02 11:43:28

标签: unity3d cg

我正在写一个香椿水上着色器,我希望它被定向灯照亮。我得到了它的工作,但我认为法线有问题,因为波浪之间没有阴影。我希望有人能找到我犯的错误,并提前感谢你。

enter image description here

connections = 0
while connections < 10 # or however many
  begin
    try_connecting
    break # only called when no error raised
  rescue Mongo::ConnectionFailure => ex
    connections += 1
    sleep(0.5)
  end
end

1 个答案:

答案 0 :(得分:0)

快速回答一下你的法线

float3 normalDirection = normalize( mul( float4( VOUT.nor, 0.0 ), _World2Object).xyz);              

法线在本地aka对象空间中给出。你需要转换为世界空间。乘法的顺序是错误的。它应该是:

float3 normalDirection = normalize( mul( _World2Object, float4( VOUT.nor, 0.0 )).xyz);

相当于:

float3 normalDirection = normalize( mul( float4( VOUT.nor, 0.0 ), _Object2World).xyz); 

通常将变换矩阵放在要变换的矢量之前。