解法#1:
這個方式雖然可以讓另一面透出來,但是卻沒辦法有正確的顏色,因為在背面演算時,光線的法線是相反的,所以光線的顏色進不了眼睛
結論:失敗
解法#2:兩面計算
在shader中作兩次pass,一次算正面,一次算背面,算背面的那次要把所有的法線都做反向
DoubledMaterialCloth.shader
在Cull Front的pass中
#define _BACKFACE_RENDERING 1
UnityStandardCore.cginc
在VertexOutputForwardBase vertForwardBase (VertexInput v)中結論:解決 !
#ifdef _BACKFACE_RENDERING
float3 normalWorld = UnityObjectToWorldNormal(-v.normal);
#else
float3 normalWorld = UnityObjectToWorldNormal(v.normal);
#endif
No comments:
Post a Comment