Lux URP Terrain Blend Depth Only.shader 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. Shader "Lux URP/Terrain/Blend Depth Only"
  2. {
  3. Properties
  4. {
  5. }
  6. SubShader
  7. {
  8. Tags
  9. {
  10. "RenderPipeline" = "UniversalPipeline"
  11. "RenderType" = "Opaque"
  12. "Queue" = "Geometry+1"
  13. }
  14. LOD 100
  15. // Depth Only in Lit Pass -----------------------------------------------------
  16. Pass
  17. {
  18. Name "ForwardLit"
  19. Tags{"LightMode" = "UniversalForward"}
  20. ZWrite On
  21. ColorMask 0
  22. Cull Back
  23. HLSLPROGRAM
  24. // Required to compile gles 2.0 with standard srp library
  25. #pragma prefer_hlslcc gles
  26. #pragma exclude_renderers d3d11_9x
  27. #pragma target 2.0
  28. #pragma vertex DepthOnlyVertex
  29. #pragma fragment DepthOnlyFragment
  30. // -------------------------------------
  31. // Material Keywords
  32. //--------------------------------------
  33. // GPU Instancing
  34. #pragma multi_compile_instancing
  35. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  36. // Material Inputs
  37. struct VertexInput {
  38. float3 positionOS : POSITION;
  39. UNITY_VERTEX_INPUT_INSTANCE_ID
  40. };
  41. struct VertexOutput {
  42. float4 positionCS : SV_POSITION;
  43. UNITY_VERTEX_INPUT_INSTANCE_ID
  44. UNITY_VERTEX_OUTPUT_STEREO
  45. };
  46. VertexOutput DepthOnlyVertex(VertexInput input)
  47. {
  48. VertexOutput output = (VertexOutput)0;
  49. UNITY_SETUP_INSTANCE_ID(input);
  50. UNITY_TRANSFER_INSTANCE_ID(input, output);
  51. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
  52. output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
  53. return output;
  54. }
  55. half4 DepthOnlyFragment(VertexOutput input) : SV_TARGET
  56. {
  57. UNITY_SETUP_INSTANCE_ID(input);
  58. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
  59. return 0;
  60. }
  61. ENDHLSL
  62. }
  63. // This pass is used when drawing to a _CameraNormalsTexture texture
  64. Pass
  65. {
  66. Name "DepthNormalsXXX"
  67. Tags{"LightMode" = "DepthNormalsXXX"}
  68. ZWrite On
  69. Cull[_Cull]
  70. HLSLPROGRAM
  71. #pragma exclude_renderers d3d11_9x
  72. #pragma target 4.5
  73. #pragma vertex DepthNormalVertex
  74. #pragma fragment DepthNormalFragment
  75. // -------------------------------------
  76. // Material Keywords
  77. //--------------------------------------
  78. // GPU Instancing
  79. #pragma multi_compile_instancing
  80. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  81. // Material Inputs
  82. struct VertexInput {
  83. float3 positionOS : POSITION;
  84. float3 normalOS : NORMAL;
  85. UNITY_VERTEX_INPUT_INSTANCE_ID
  86. };
  87. struct VertexOutput {
  88. float4 positionCS : SV_POSITION;
  89. float3 normalWS : TEXCOORD0;
  90. UNITY_VERTEX_INPUT_INSTANCE_ID
  91. UNITY_VERTEX_OUTPUT_STEREO
  92. };
  93. VertexOutput DepthNormalVertex(VertexInput input)
  94. {
  95. VertexOutput output = (VertexOutput)0;
  96. UNITY_SETUP_INSTANCE_ID(input);
  97. UNITY_TRANSFER_INSTANCE_ID(input, output);
  98. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
  99. output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
  100. output.normalWS = TransformObjectToWorldDir(input.normalOS, true);
  101. return output;
  102. }
  103. half4 DepthNormalFragment(VertexOutput input) : SV_TARGET
  104. {
  105. UNITY_SETUP_INSTANCE_ID(input);
  106. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
  107. float3 normal = input.normalWS;
  108. return float4(PackNormalOctRectEncode(TransformWorldToViewDir(normal, true)), 0.0, 0.0);
  109. }
  110. ENDHLSL
  111. }
  112. // End Passes -----------------------------------------------------
  113. }
  114. FallBack "Hidden/InternalErrorShader"
  115. }