当前位置:   article > 正文

Unity Shader学习记录之根据屏幕坐标和深度图重建世界坐标_unity 重建世界坐标

unity 重建世界坐标

看了好久的体积光教程,始终卡在重建世界坐标这一步,今天照着官方代码误打误撞弄出来了。

单纯记录一下实现代码及结果,具体实现逻辑还有点懵。

  1. Shader "shaderName"
  2. {
  3. Properties{}
  4. SubShader
  5. {
  6. Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"}
  7. Cull Off ZWrite Off ZTest Always
  8. Pass
  9. {
  10. HLSLPROGRAM
  11. #pragma vertex vert
  12. #pragma fragment frag
  13. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl"
  14. struct appdata
  15. {
  16. float4 vertex : POSITION;
  17. };
  18. struct v2f
  19. {
  20. float4 vertex : SV_POSITION;
  21. };
  22. v2f vert (appdata v)
  23. {
  24. v2f o;
  25. o.vertex = TransformObjectToHClip(v.vertex);
  26. return o;
  27. }
  28. half4 frag (v2f i) : SV_Target
  29. {
  30. float2 UV = i.vertex.xy / _ScaledScreenParams.xy;
  31. #if UNITY_REVERSED_Z
  32. real depth = SampleSceneDepth(UV);
  33. #else
  34. real depth = lerp(UNITY_NEAR_CLIP_VALUE, 1, SampleSceneDepth(UV));
  35. #endif
  36. float3 worldPos = ComputeWorldSpacePosition(UV, depth, UNITY_MATRIX_I_VP);
  37. return half4(worldPos,1);
  38. }
  39. ENDHLSL
  40. }
  41. }
  42. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/101318
推荐阅读
相关标签
  

闽ICP备14008679号