浏览代码

HDRenderLoop: rename decompress DXT5nm function + add AGorRG version

/main
sebastienlagarde 8 年前
当前提交
1b6976d6
共有 2 个文件被更改,包括 16 次插入4 次删除
  1. 2
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LitTemplate.hlsl
  2. 18
      Assets/ScriptableRenderLoop/ShaderLibrary/Packing.hlsl

2
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LitTemplate.hlsl


#ifdef _NORMALMAP
#ifdef _NORMALMAP_TANGENT_SPACE
float3 normalTS = UnpackNormalDXT5nm(UNITY_SAMPLE_TEX2D(_NormalMap, input.texCoord0));
float3 normalTS = UnpackNormalAG(UNITY_SAMPLE_TEX2D(_NormalMap, input.texCoord0));
surfaceData.normalWS = TransformTangentToWorld(normalTS, input.tangentToWorld);
#else // Object space (TODO: We need to apply the world rotation here!)
surfaceData.normalWS = UNITY_SAMPLE_TEX2D(_NormalMap, input.texCoord0).rgb;

18
Assets/ScriptableRenderLoop/ShaderLibrary/Packing.hlsl


return normalize(n);
}
float3 UnpackNormalDXT5nm (float4 packednormal)
float3 UnpackNormalAG(float4 packedNormal)
normal.xy = packednormal.wy * 2.0 - 1.0;
normal.z = sqrt(1 - saturate(dot(normal.xy, normal.xy)));
normal.xy = packedNormal.wy * 2.0 - 1.0;
normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));
return normal;
}
// Unpack normal as DXT5nm (1, y, 0, x) or BC5 (x, y, 0, 1)
float3 UnpackNormalmapRGorAG(float4 packedNormal)
{
// This do the trick
packedNormal.x *= packedNormal.w;
float3 normal;
normal.xy = packedNormal.xy * 2.0 - 1.0;
normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));
return normal;
}

正在加载...
取消
保存