FDepthDrawingPolicy::FDepthDrawingPolicy( const FVertexFactory* InVertexFactory, const FMaterialRenderProxy* InMaterialRenderProxy, const FMaterial& InMaterialResource, bool bIsTwoSided, ERHIFeatureLevel::Type InFeatureLevel ): FMeshDrawingPolicy(InVertexFactory,InMaterialRenderProxy,InMaterialResource,false,/*bInTwoSidedOverride=*/ bIsTwoSided) { // The primitive needs to be rendered with the material's pixel and vertex shaders if it is masked bNeedsPixelShader = false; if (InMaterialResource.IsMasked()) { bNeedsPixelShader = true; PixelShader = InMaterialResource.GetShader<FDepthOnlyPS>(InVertexFactory->GetType()); } else { PixelShader = NULL; } const EMaterialTessellationMode TessellationMode = InMaterialResource.GetTessellationMode(); VertexShader = NULL; HullShader = NULL; DomainShader = NULL; if (RHISupportsTessellation(GShaderPlatformForFeatureLevel[InFeatureLevel]) && InVertexFactory->GetType()->SupportsTessellationShaders() && TessellationMode != MTM_NoTessellation) { VertexShader = InMaterialResource.GetShader<TDepthOnlyVS<false> >(VertexFactory->GetType()); HullShader = InMaterialResource.GetShader<FDepthOnlyHS>(VertexFactory->GetType()); DomainShader = InMaterialResource.GetShader<FDepthOnlyDS>(VertexFactory->GetType()); } else { VertexShader = InMaterialResource.GetShader<TDepthOnlyVS<false> >(InVertexFactory->GetType()); } }