72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
Shader "Hidden/Universal Render Pipeline/XR/XROcclusionMesh"
|
|
{
|
|
HLSLINCLUDE
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
#pragma multi_compile _ XR_OCCLUSION_MESH_COMBINED
|
|
|
|
// Not all platforms properly support SV_RenderTargetArrayIndex
|
|
#if defined(SHADER_API_D3D11) || defined(SHADER_API_VULKAN) || defined(SHADER_API_GLCORE) || defined(SHADER_API_GLES3) || defined(SHADER_API_PSSL)
|
|
#if defined (UNITY_STEREO_MULTIVIEW_ENABLED)
|
|
#define USE_XR_OCCLUSION_MESH_COMBINED_MULTIVIEW XR_OCCLUSION_MESH_COMBINED
|
|
#else
|
|
#define USE_XR_OCCLUSION_MESH_COMBINED_RT_ARRAY_INDEX XR_OCCLUSION_MESH_COMBINED
|
|
#endif
|
|
#endif
|
|
|
|
struct Attributes
|
|
{
|
|
float4 vertex : POSITION;
|
|
};
|
|
|
|
struct Varyings
|
|
{
|
|
float4 vertex : SV_POSITION;
|
|
|
|
#if USE_XR_OCCLUSION_MESH_COMBINED_RT_ARRAY_INDEX
|
|
uint rtArrayIndex : SV_RenderTargetArrayIndex;
|
|
#endif
|
|
};
|
|
|
|
Varyings Vert(Attributes input)
|
|
{
|
|
Varyings output;
|
|
output.vertex = mul(UNITY_MATRIX_M, float4(input.vertex.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), UNITY_NEAR_CLIP_VALUE, 1.0f));
|
|
|
|
#if USE_XR_OCCLUSION_MESH_COMBINED_MULTIVIEW
|
|
if (unity_StereoEyeIndex != uint(input.vertex.z))
|
|
{
|
|
output.vertex = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
|
}
|
|
#elif USE_XR_OCCLUSION_MESH_COMBINED_RT_ARRAY_INDEX
|
|
output.rtArrayIndex = input.vertex.z;
|
|
#endif
|
|
|
|
return output;
|
|
}
|
|
|
|
float4 Frag() : SV_Target
|
|
{
|
|
return (0.0f).xxxx;
|
|
}
|
|
|
|
ENDHLSL
|
|
|
|
SubShader
|
|
{
|
|
Tags{ "RenderPipeline" = "UniversalPipeline" }
|
|
|
|
Pass
|
|
{
|
|
ZWrite On ZTest Always Blend Off Cull Off
|
|
ColorMask 0
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vert
|
|
#pragma fragment Frag
|
|
ENDHLSL
|
|
}
|
|
}
|
|
Fallback Off
|
|
}
|