Preview_PositionNode.shader 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. Shader "Hidden/WorldPosInputsNode"
  2. {
  3. CGINCLUDE
  4. #pragma vertex vert_img
  5. #pragma fragment frag
  6. #include "UnityCG.cginc"
  7. #include "Preview.cginc"
  8. ENDCG
  9. SubShader
  10. {
  11. // Object
  12. Pass
  13. {
  14. CGPROGRAM
  15. float4 frag( v2f_img i ) : SV_Target
  16. {
  17. float3 positionOS = PreviewFragmentPositionOS( i.uv );
  18. return float4( positionOS, 1 );
  19. }
  20. ENDCG
  21. }
  22. // World
  23. Pass
  24. {
  25. CGPROGRAM
  26. float4 frag( v2f_img i ) : SV_Target
  27. {
  28. float3 positionOS = PreviewFragmentPositionOS( i.uv );
  29. float3 positionWS = mul( unity_ObjectToWorld, positionOS );
  30. return float4( positionWS, 1 );
  31. }
  32. ENDCG
  33. }
  34. // Relative World
  35. Pass
  36. {
  37. CGPROGRAM
  38. float4 frag( v2f_img i ) : SV_Target
  39. {
  40. float3 positionOS = PreviewFragmentPositionOS( i.uv );
  41. float3 positionWS = mul( unity_ObjectToWorld, positionOS );
  42. float3 positionRWS = positionWS - preview_WorldSpaceCameraPos.xyz;
  43. return float4( positionRWS, 1 );
  44. }
  45. ENDCG
  46. }
  47. // View
  48. Pass
  49. {
  50. CGPROGRAM
  51. float4 frag( v2f_img i ) : SV_Target
  52. {
  53. float3 positionOS = PreviewFragmentPositionOS( i.uv );
  54. float3 positionVS = UnityObjectToViewPos( positionOS );
  55. return float4( positionVS, 1 );
  56. }
  57. ENDCG
  58. }
  59. }
  60. }