using UnityEditor.Build ;
using UnityEditor.Rendering ;
using UnityEngine ;
using UnityEngine.Rendering ;
using UnityEngine.Experimental.Rendering.HDPipeline ;
namespace UnityEditor.Experimental.Rendering.HDPipeline
protected ShaderKeyword m_WriteNormalBuffer ;
LitShaderPreprocessor ( )
{
m_WriteNormalBuffer = new ShaderKeyword ( "WRITE_NORMAL_BUFFER" ) ;
}
bool LitShaderStripper ( HDRenderPipelineAsset hdrpAsset , Shader shader , ShaderSnippetData snippet , ShaderCompilerData inputData )
{
if ( CommonShaderStripper ( hdrpAsset , shader , snippet , inputData ) )
bool isForwardPass = snippet . passName = = "Forward" ;
bool isDepthOnlyPass = snippet . passName = = "DepthOnly" ;
bool isTransparentForwardPass = snippet . passName = = "TransparentDepthPostpass" | | snippet . passName = = "TransparentBackface" | | snippet . passName = = "TransparentDepthPrepass" ;
// When using forward only, we never need GBuffer pass (only Forward)
// When we are in deferred (i.e !hdrpAsset.renderPipelineSettings.supportOnlyForward), we only support tile lighting
if ( ! hdrpAsset . renderPipelineSettings . supportOnlyForward & & inputData . shaderKeywordSet . IsEnabled ( m_ClusterLighting ) )
return true ;
if ( isDepthOnlyPass )
{
// When we are full forward, we don't have depth prepass without writeNormalBuffer
if ( hdrpAsset . renderPipelineSettings . supportOnlyForward & & ! inputData . shaderKeywordSet . IsEnabled ( m_WriteNormalBuffer ) )
return true ;
// When we are in deferred we don't have depth prepass with writeNormalBuffer
if ( ! hdrpAsset . renderPipelineSettings . supportOnlyForward & & inputData . shaderKeywordSet . IsEnabled ( m_WriteNormalBuffer ) )
return true ;
}
if ( ! hdrpAsset . renderPipelineSettings . supportOnlyForward )
{