暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DeclareNormalsTexture.hlsl 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef UNITY_DECLARE_NORMALS_TEXTURE_INCLUDED
  2. #define UNITY_DECLARE_NORMALS_TEXTURE_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  4. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DynamicScalingClamping.hlsl"
  5. TEXTURE2D_X_FLOAT(_CameraNormalsTexture);
  6. float4 _CameraNormalsTexture_TexelSize;
  7. // 2023.3 Deprecated. This is for backwards compatibility. Remove in the future.
  8. #define sampler_CameraNormalsTexture sampler_PointClamp
  9. float3 SampleSceneNormals(float2 uv, SAMPLER(samplerParam))
  10. {
  11. uv = ClampAndScaleUVForBilinear(UnityStereoTransformScreenSpaceTex(uv), _CameraNormalsTexture_TexelSize.xy);
  12. float3 normal = SAMPLE_TEXTURE2D_X(_CameraNormalsTexture, samplerParam, uv).xyz;
  13. #if defined(_GBUFFER_NORMALS_OCT)
  14. float2 remappedOctNormalWS = Unpack888ToFloat2(normal); // values between [ 0, 1]
  15. float2 octNormalWS = remappedOctNormalWS.xy * 2.0 - 1.0; // values between [-1, +1]
  16. normal = UnpackNormalOctQuadEncode(octNormalWS);
  17. #endif
  18. return normal;
  19. }
  20. float3 SampleSceneNormals(float2 uv)
  21. {
  22. return SampleSceneNormals(uv, sampler_PointClamp);
  23. }
  24. float3 LoadSceneNormals(uint2 pixelCoords)
  25. {
  26. float3 normal = LOAD_TEXTURE2D_X(_CameraNormalsTexture, pixelCoords).xyz;
  27. #if defined(_GBUFFER_NORMALS_OCT)
  28. float2 remappedOctNormalWS = Unpack888ToFloat2(normal); // values between [ 0, 1]
  29. float2 octNormalWS = remappedOctNormalWS.xy * 2.0 - 1.0; // values between [-1, +1]
  30. normal = UnpackNormalOctQuadEncode(octNormalWS);
  31. #endif
  32. return normal;
  33. }
  34. #endif