環境: Unity2021.3.16f1, URP12.1.8
Shader 側で GBuffer + Depth を利用するためには、特にスクリプト側で設定する必要は無く、
- _CameraDepthTexture
- _GBuffer0
- _GBuffer1
- _GBuffer2
を定義するだけで参照することができる
Shader "Hidden/GBufferFullScreenShader" { SubShader { Cull Off ZWrite Off ZTest Always Pass { HLSLPROGRAM #pragma vertex FullscreenVert #pragma fragment frag #include "Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Common.hlsl" TEXTURE2D_X(_CameraDepthTexture); TEXTURE2D_X_HALF(_GBuffer0); TEXTURE2D_X_HALF(_GBuffer1); TEXTURE2D_X_HALF(_GBuffer2); SamplerState my_point_clamp_sampler; half4 frag(Varyings i) : SV_Target { half4 depth = SAMPLE_TEXTURE2D_X_LOD(_CameraDepthTexture, my_point_clamp_sampler, i.uv, 0); half4 gbuffer0 = SAMPLE_TEXTURE2D_X_LOD(_GBuffer0, my_point_clamp_sampler, i.uv, 0); half4 gbuffer1 = SAMPLE_TEXTURE2D_X_LOD(_GBuffer1, my_point_clamp_sampler, i.uv, 0); half4 gbuffer2 = SAMPLE_TEXTURE2D_X_LOD(_GBuffer2, my_point_clamp_sampler, i.uv, 0); return gbuffer0; } ENDHLSL } } }
以下に実際に取得できたバッファーを以下に示す
Default
_CameraDepthTexture
_GBuffer0
_GBuffer1
_GBuffer2