Unity Shader顶点变换小记

这有一篇引用 https://blog.csdn.net/qq_34469717/article/details/78528231

关于片元沿着法线法向偏移的方法,其实再哪个空间偏移都可以,关键看具体需要

局部空间

 v2f vert (appdata v)
 {
       v2f o;
       o.uv = TRANSFORM_TEX(v.uv, _MainTex);
       o.vertex.xyz = v.vertex.xyz + normalize(v.normal) * 0.01;
       o.vertex = UnityObjectToClipPos(o.vertex); 
       return o;
   }

摄相机空间

v2f vert (appdata v)
{
      v2f o;
      o.uv = TRANSFORM_TEX(v.uv, _MainTex);

      float4 pos = mul(UNITY_MATRIX_MV, v.vertex); 
      float3 normal = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal);  
      
      pos = pos + float4(normalize(normal), 0) * 0.00001;
      o.vertex = mul(UNITY_MATRIX_P, pos);

      return o;
  }

你可能感兴趣的:(opengl)