#ifndef GET_SCENE_NORMAL #define GET_SCENE_NORMAL #if !defined(SHADERGRAPH_PREVIEW) #if defined(UNIVERSAL_PIPELINE_CORE_INCLUDED) //URP #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" void GetSceneNormal_float(float2 ScreenPos, out float3 WorldNormal) { WorldNormal = SampleSceneNormals(ScreenPos); } void GetSceneNormal_half(float2 ScreenPos, out float3 WorldNormal) { WorldNormal = SampleSceneNormals(ScreenPos); } #else //HDRP #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" void GetSceneNormal_float(float2 ScreenPos, out float3 WorldNormal) { uint2 positionSS = ScreenPos * _ScreenSize.xy; NormalData normalData; DecodeFromNormalBuffer(positionSS, normalData); WorldNormal = normalData.normalWS; } #endif #else void GetSceneNormal_float(float2 ScreenPos, UnityTexture2D _CameraNormalsTexture, out float3 WorldNormal) { WorldNormal = float3(0,1,0); } void GetSceneNormal_half(float2 ScreenPos, UnityTexture2D _CameraNormalsTexture, out float3 WorldNormal) { WorldNormal = float3(0,1,0); } #endif #endif