FTransientDecalRenderData::FTransientDecalRenderData(const FScene& InScene, const FDeferredDecalProxy* InDecalProxy, float InConservativeRadius) : DecalProxy(InDecalProxy) , FadeAlpha(1.0f) , ConservativeRadius(InConservativeRadius) { MaterialProxy = InDecalProxy->DecalMaterial->GetRenderProxy(InDecalProxy->bOwnerSelected); MaterialResource = MaterialProxy->GetMaterial(InScene.GetFeatureLevel()); check(MaterialProxy && MaterialResource); bHasNormal = MaterialResource->HasNormalConnected(); DecalBlendMode = FDecalRenderingCommon::ComputeFinalDecalBlendMode(InScene.GetShaderPlatform(), (EDecalBlendMode)MaterialResource->GetDecalBlendMode(), bHasNormal); }
static bool IsReflectionEnvironmentActive(FPostprocessContext& Context) { FScene* Scene = (FScene*)Context.View.Family->Scene; // LPV & Screenspace Reflections : Reflection Environment active if either LPV (assumed true if this was called), Reflection Captures or SSR active bool IsReflectingEnvironment = Context.View.Family->EngineShowFlags.ReflectionEnvironment; bool HasReflectionCaptures = (Scene->ReflectionSceneData.RegisteredReflectionCaptures.Num() > 0); bool HasSSR = Context.View.Family->EngineShowFlags.ScreenSpaceReflections; return (Scene->GetFeatureLevel() == ERHIFeatureLevel::SM5 && IsReflectingEnvironment && (HasReflectionCaptures || HasSSR) && !IsSimpleDynamicLightingEnabled()); }
static bool IsReflectionEnvironmentActive(const FSceneView& View) { FScene* Scene = (FScene*)View.Family->Scene; // LPV & Screenspace Reflections : Reflection Environment active if either LPV (assumed true if this was called), Reflection Captures or SSR active bool IsReflectingEnvironment = View.Family->EngineShowFlags.ReflectionEnvironment; bool HasReflectionCaptures = (Scene->ReflectionSceneData.RegisteredReflectionCaptures.Num() > 0); bool HasSSR = View.Family->EngineShowFlags.ScreenSpaceReflections; return (Scene->GetFeatureLevel() == ERHIFeatureLevel::SM5 && IsReflectingEnvironment && (HasReflectionCaptures || HasSSR) && !IsAnyForwardShadingEnabled(View.GetShaderPlatform())); }
FTransientDecalRenderData(const FScene& InScene, FDeferredDecalProxy* InDecalProxy) : DecalProxy(InDecalProxy) { MaterialProxy = InDecalProxy->DecalMaterial->GetRenderProxy(InDecalProxy->bOwnerSelected); MaterialResource = MaterialProxy->GetMaterial(InScene.GetFeatureLevel()); bHasNormal = MaterialResource->HasNormalConnected(); DecalBlendMode = ComputeFinalDecalBlendMode((EDecalBlendMode)MaterialResource->GetDecalBlendMode(), bHasNormal); check(MaterialProxy && MaterialResource); }
void Process( FRHICommandList& RHICmdList, const FProcessBasePassMeshParameters& Parameters, const LightMapPolicyType& LightMapPolicy, const typename LightMapPolicyType::ElementDataType& LightMapElementData ) const { FScene::EBasePassDrawListType DrawType = FScene::EBasePass_Default; if (StaticMesh->IsMasked(Parameters.FeatureLevel)) { DrawType = FScene::EBasePass_Masked; } if (Scene) { // Find the appropriate draw list for the static mesh based on the light-map policy type. TStaticMeshDrawList<TBasePassDrawingPolicy<LightMapPolicyType> >& DrawList = Scene->GetBasePassDrawList<LightMapPolicyType>(DrawType); // Add the static mesh to the draw list. DrawList.AddMesh( StaticMesh, typename TBasePassDrawingPolicy<LightMapPolicyType>::ElementDataType(LightMapElementData), TBasePassDrawingPolicy<LightMapPolicyType>( StaticMesh->VertexFactory, StaticMesh->MaterialRenderProxy, *Parameters.Material, Parameters.FeatureLevel, LightMapPolicy, Parameters.BlendMode, Parameters.TextureMode, Parameters.ShadingModel != MSM_Unlit && Scene->SkyLight && Scene->SkyLight->bWantsStaticShadowing && !Scene->SkyLight->bHasStaticLighting, IsTranslucentBlendMode(Parameters.BlendMode) && Scene->HasAtmosphericFog(), /* bOverrideWithShaderComplexity = */ false, /* bInAllowGlobalFog = */ false, /* bInEnableEditorPrimitiveDepthTest = */ false, /* bInEnableReceiveDecalOutput = */ true ), Scene->GetFeatureLevel() ); } }
bool FVelocityDrawingPolicy::HasVelocityOnBasePass(const FViewInfo& View,const FPrimitiveSceneProxy* PrimitiveSceneProxy, const FPrimitiveSceneInfo* PrimitiveSceneInfo, const FMeshBatch& Mesh, bool& bOutHasTransform, FMatrix& OutTransform) { checkSlow(IsInParallelRenderingThread()); // No velocity if motionblur is off, or if it's a non-moving object (treat as background in that case) if (View.bCameraCut) { return false; } //@todo-rco: Where is this set? if (PrimitiveSceneInfo->bVelocityIsSupressed) { return false; } // hack FScene* Scene = PrimitiveSceneInfo->Scene; if (Scene->MotionBlurInfoData.GetPrimitiveMotionBlurInfo(PrimitiveSceneInfo, OutTransform)) { bOutHasTransform = true; /* const FMatrix& LocalToWorld = PrimitiveSceneProxy->GetLocalToWorld(); // Hasn't moved (treat as background by not rendering any special velocities)? if (LocalToWorld.Equals(OutTransform, 0.0001f)) { return false; } */ return true; } bOutHasTransform = false; if (PrimitiveSceneProxy->IsMovable()) { return true; } //@todo-rco: Optimize finding WPO! auto* Material = Mesh.MaterialRenderProxy->GetMaterial(Scene->GetFeatureLevel()); return Material->MaterialModifiesMeshPosition_RenderThread() && Material->OutputsVelocityOnBasePass(); }
void Process( FRHICommandList& RHICmdList, const FProcessBasePassMeshParameters& Parameters, const LightMapPolicyType& LightMapPolicy, const typename LightMapPolicyType::ElementDataType& LightMapElementData ) const { FScene::EBasePassDrawListType DrawType = FScene::EBasePass_Default; if (StaticMesh->IsMasked(Parameters.FeatureLevel)) { DrawType = FScene::EBasePass_Masked; } // Find the appropriate draw list for the static mesh based on the light-map policy type. TStaticMeshDrawList<TBasePassForForwardShadingDrawingPolicy<LightMapPolicyType> >& DrawList = Scene->GetForwardShadingBasePassDrawList<LightMapPolicyType>(DrawType); ERHIFeatureLevel::Type FeatureLevel = Scene->GetFeatureLevel(); // Add the static mesh to the draw list. DrawList.AddMesh( StaticMesh, typename TBasePassForForwardShadingDrawingPolicy<LightMapPolicyType>::ElementDataType(LightMapElementData), TBasePassForForwardShadingDrawingPolicy<LightMapPolicyType>( StaticMesh->VertexFactory, StaticMesh->MaterialRenderProxy, *Parameters.Material, LightMapPolicy, Parameters.BlendMode, Parameters.TextureMode, Parameters.ShadingModel != MSM_Unlit && Scene && Scene->ShouldRenderSkylight(), false, FeatureLevel ), FeatureLevel ); }