/** Sets shader parameter values */ void SetParameters( FRHICommandList& RHICmdList, FSamplerStateRHIParamRef SamplerStateRHI, FTextureRHIParamRef FilterTextureRHI, FTextureRHIParamRef AdditiveTextureRHI, const FLinearColor* SampleWeightValues, const FVector2D* SampleOffsetValues, uint32 NumSamples ) { check(CompileTimeNumSamples == 0 && NumSamples > 0 && NumSamples <= MAX_FILTER_SAMPLES || CompileTimeNumSamples == NumSamples); const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); SetTextureParameter(RHICmdList, ShaderRHI, FilterTexture, FilterTextureSampler, SamplerStateRHI, FilterTextureRHI); SetTextureParameter(RHICmdList, ShaderRHI, AdditiveTexture, AdditiveTextureSampler, SamplerStateRHI, AdditiveTextureRHI); SetShaderValueArray(RHICmdList, ShaderRHI, SampleWeights, SampleWeightValues, NumSamples); if (CompileTimeNumSamples == 0) { // we needs additional setups for the dynamic loop FVector4 PackedSampleOffsetsValues[MAX_PACKED_SAMPLES_OFFSET]; for(uint32 SampleIndex = 0;SampleIndex < NumSamples;SampleIndex += 2) { PackedSampleOffsetsValues[SampleIndex / 2].X = SampleOffsetValues[SampleIndex + 0].X; PackedSampleOffsetsValues[SampleIndex / 2].Y = SampleOffsetValues[SampleIndex + 0].Y; if(SampleIndex + 1 < NumSamples) { PackedSampleOffsetsValues[SampleIndex / 2].W = SampleOffsetValues[SampleIndex + 1].X; PackedSampleOffsetsValues[SampleIndex / 2].Z = SampleOffsetValues[SampleIndex + 1].Y; } } SetShaderValueArray(RHICmdList, ShaderRHI, SampleOffsets, PackedSampleOffsetsValues, MAX_PACKED_SAMPLES_OFFSET); SetShaderValue(RHICmdList, ShaderRHI, SampleCount, NumSamples); } }
void SetParameters(FRHICommandList& RHICmdList, const FSceneView& View, const FMatrix& InFrustumComponentToClip) { const FVertexShaderRHIParamRef ShaderRHI = GetVertexShader(); FGlobalShader::SetParameters(RHICmdList, ShaderRHI, View); SetShaderValue(RHICmdList, ShaderRHI, FrustumComponentToClip, InFrustumComponentToClip); }
void SetParameters(const FRenderingCompositePassContext& Context, IPooledRenderTarget& DistortionRT) { FSceneRenderTargets& SceneContext = FSceneRenderTargets::Get(Context.RHICmdList); const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FTextureRHIParamRef DistortionTextureValue = DistortionRT.GetRenderTargetItem().ShaderResourceTexture; FTextureRHIParamRef SceneColorTextureValue = SceneContext.GetSceneColor()->GetRenderTargetItem().ShaderResourceTexture; // Here we use SF_Point as in fullscreen the pixels are 1:1 mapped. SetTextureParameter( Context.RHICmdList, ShaderRHI, DistortionTexture, DistortionTextureSampler, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI(), DistortionTextureValue ); SetTextureParameter( Context.RHICmdList, ShaderRHI, SceneColorTexture, SceneColorTextureSampler, TStaticSamplerState<SF_Bilinear,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI(), SceneColorTextureValue ); FIntPoint SceneBufferSize = SceneContext.GetBufferSizeXY(); FIntRect ViewportRect = Context.GetViewport(); FVector4 SceneColorRectValue = FVector4((float)ViewportRect.Min.X/SceneBufferSize.X, (float)ViewportRect.Min.Y/SceneBufferSize.Y, (float)ViewportRect.Max.X/SceneBufferSize.X, (float)ViewportRect.Max.Y/SceneBufferSize.Y); SetShaderValue(Context.RHICmdList, ShaderRHI, SceneColorRect, SceneColorRectValue); }
void FClearTexture2DReplacementCS::SetParameters( FRHICommandList& RHICmdList, FUnorderedAccessViewRHIParamRef TextureRW, FLinearColor Value ) { FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader(); SetShaderValue(RHICmdList, ComputeShaderRHI, ClearColor, Value); RHICmdList.TransitionResource(EResourceTransitionAccess::ERWBarrier, EResourceTransitionPipeline::EGfxToCompute, TextureRW); RHICmdList.SetUAVParameter(ComputeShaderRHI, ClearTextureRW.GetBaseIndex(), TextureRW); }
void SetParameters(FRHICommandList& RHICmdList, const FSceneView& View) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(RHICmdList, ShaderRHI, View); DeferredParameters.Set(RHICmdList, ShaderRHI, View); SetShaderValue(RHICmdList, ShaderRHI, MaskComparison, View.Family->EngineShowFlags.ShaderComplexity ? -1.0f : 0.5f); }
/** Sets shader parameter values */ void SetParameters(FRHICommandList& RHICmdList, const FLightSceneInfo* LightSceneInfo, const FViewInfo& View, int32 PassIndex, TRefCountPtr<IPooledRenderTarget>& PassSource) { FGlobalShader::SetParameters(RHICmdList, GetPixelShader(), View); LightShaftParameters.SetParameters(RHICmdList, GetPixelShader(), LightSceneInfo, View, PassSource); const FVector4 Parameters(GLightShaftBlurNumSamples, GLightShaftFirstPassDistance, PassIndex); SetShaderValue(RHICmdList, GetPixelShader(), RadialBlurParameters, Parameters); }
/** * Sets all the constant parameters for this shader * * @param Texture - 2d tile texture * @param Gamma - if gamma != 1.0 then a pow(color,Gamma) is applied * @param ClipRef - reference value to compare with alpha for killing pixels * @param SmoothWidth - The width to smooth the edge the texture * @param EnableShadow - Toggles drop shadow rendering * @param ShadowDirection - 2D vector specifying the direction of shadow * @param ShadowColor - Color of the shadowed pixels * @param ShadowSmoothWidth - The width to smooth the edge the shadow of the texture * @param BlendMode - current batched element blend mode being rendered */ void FSimpleElementDistanceFieldGammaPS::SetParameters( const FTexture* Texture, float Gamma, float ClipRef, float SmoothWidthValue, bool EnableShadowValue, const FVector2D& ShadowDirectionValue, const FLinearColor& ShadowColorValue, float ShadowSmoothWidthValue, const FDepthFieldGlowInfo& GlowInfo, ESimpleElementBlendMode BlendMode ) { FSimpleElementMaskedGammaPS::SetParameters(Texture,Gamma,ClipRef,BlendMode); SetShaderValue(GetPixelShader(),SmoothWidth,SmoothWidthValue); SetPixelShaderBool(GetPixelShader(),EnableShadow,EnableShadowValue); if (EnableShadowValue) { SetShaderValue(GetPixelShader(),ShadowDirection,ShadowDirectionValue); SetShaderValue(GetPixelShader(),ShadowColor,ShadowColorValue); SetShaderValue(GetPixelShader(),ShadowSmoothWidth,ShadowSmoothWidthValue); } SetPixelShaderBool(GetPixelShader(),EnableGlow,GlowInfo.bEnableGlow); if (GlowInfo.bEnableGlow) { SetShaderValue(GetPixelShader(),GlowColor,GlowInfo.GlowColor); SetShaderValue(GetPixelShader(),GlowOuterRadius,GlowInfo.GlowOuterRadius); SetShaderValue(GetPixelShader(),GlowInnerRadius,GlowInfo.GlowInnerRadius); } // This shader does not use editor compositing SetEditorCompositingParameters( NULL, FTexture2DRHIRef() ); }
/** to have a similar interface as all other shaders */ void SetParameters(const FRenderingCompositePassContext& Context, FIntPoint TileCountValue) { const FVertexShaderRHIParamRef ShaderRHI = GetVertexShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetVS(ShaderRHI, Context, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); SetShaderValue(Context.RHICmdList, ShaderRHI, TileCount, TileCountValue); }
virtual void SetMesh(FRHICommandList& RHICmdList, FShader* Shader,const FVertexFactory* VertexFactory,const FSceneView& View,const FMeshBatchElement& BatchElement,uint32 DataFlags) const override { FParticleSpriteVertexFactory* SpriteVF = (FParticleSpriteVertexFactory*)VertexFactory; FVertexShaderRHIParamRef VertexShaderRHI = Shader->GetVertexShader(); SetUniformBufferParameter(RHICmdList, VertexShaderRHI, Shader->GetUniformBufferParameter<FParticleSpriteUniformParameters>(), SpriteVF->GetSpriteUniformBuffer() ); SetShaderValue(RHICmdList, VertexShaderRHI, NumCutoutVerticesPerFrame, SpriteVF->GetNumCutoutVerticesPerFrame()); FShaderResourceViewRHIParamRef NullSRV = GFNullSubUVCutoutVertexBuffer.VertexBufferSRV; SetSRVParameter(RHICmdList, VertexShaderRHI, CutoutGeometry, SpriteVF->GetCutoutGeometrySRV() ? SpriteVF->GetCutoutGeometrySRV() : NullSRV); }
/** Sets shader parameter values */ void SetParameters(FRHICommandList& RHICmdList, const FLightSceneInfo* LightSceneInfo, const FViewInfo& View, TRefCountPtr<IPooledRenderTarget>& PassSource) { FGlobalShader::SetParameters(RHICmdList, GetPixelShader(), View); LightShaftParameters.SetParameters(RHICmdList, GetPixelShader(), LightSceneInfo, View, PassSource); const FIntPoint BufferSize = FSceneRenderTargets::Get(RHICmdList).GetBufferSizeXY(); FVector2D SampleOffsets(1.0f / BufferSize.X, 1.0f / BufferSize.Y); SetShaderValue(RHICmdList, GetPixelShader(),SampleOffsetsParameter,SampleOffsets); SceneTextureParams.Set(RHICmdList, GetPixelShader(), View); }
void SetCS( FRHICommandList& RHICmdList, const FRenderingCompositePassContext& Context, const FSceneView& View ) { const FComputeShaderRHIParamRef ShaderRHI = GetComputeShader(); FGlobalShader::SetParameters(RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetCS(ShaderRHI, Context, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); CameraMotionParams.Set(RHICmdList, Context.View, ShaderRHI); SetShaderValue(RHICmdList, ShaderRHI, ViewDimensions, View.ViewRect); }
void SetParameters(const FRenderingCompositePassContext& Context, FVector2D TexScaleValue) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI()); SetShaderValue(Context.RHICmdList, ShaderRHI, TexScale, TexScaleValue); }
void FShaderComplexityAccumulatePS::SetParameters( FRHICommandList& RHICmdList, uint32 NumVertexInstructions, uint32 NumPixelInstructions, ERHIFeatureLevel::Type InFeatureLevel) { //normalize the complexity so we can fit it in a low precision scene color which is necessary on some platforms const float NormalizedComplexityValue = float(NumPixelInstructions) / GetMaxShaderComplexityCount(InFeatureLevel); SetShaderValue(RHICmdList, GetPixelShader(), NormalizedComplexity, NormalizedComplexityValue); }
void SetParameters(const FSceneView& View) { FGlobalShader::SetParameters(GetPixelShader(), View); // Used to remap view space Z (which is stored in scene color alpha) into post projection z and w so we can write z/w into the downsized depth buffer const FVector2D ProjectionScaleBiasValue(View.ViewMatrices.ProjMatrix.M[2][2], View.ViewMatrices.ProjMatrix.M[3][2]); SetShaderValue(GetPixelShader(), ProjectionScaleBias, ProjectionScaleBiasValue); FIntPoint BufferSize = GSceneRenderTargets.GetBufferSizeXY(); const uint32 DownsampledBufferSizeX = BufferSize.X / GSceneRenderTargets.GetSmallColorDepthDownsampleFactor(); const uint32 DownsampledBufferSizeY = BufferSize.Y / GSceneRenderTargets.GetSmallColorDepthDownsampleFactor(); // Offsets of the four full resolution pixels corresponding with a low resolution pixel const FVector4 Offsets01(0.0f, 0.0f, 1.0f / DownsampledBufferSizeX, 0.0f); SetShaderValue(GetPixelShader(), SourceTexelOffsets01, Offsets01); const FVector4 Offsets23(0.0f, 1.0f / DownsampledBufferSizeY, 1.0f / DownsampledBufferSizeX, 1.0f / DownsampledBufferSizeY); SetShaderValue(GetPixelShader(), SourceTexelOffsets23, Offsets23); SceneTextureParameters.Set(GetPixelShader()); }
void SetParameters(FRHICommandList& RHICmdList, int32 CubeFaceValue, int32 NumMips, int32 SourceMipIndexValue, int32 CoefficientIndex, FTextureRHIRef& SourceTextureValue) { SetShaderValue(RHICmdList, GetPixelShader(), CubeFace, CubeFaceValue); SetShaderValue(RHICmdList, GetPixelShader(), SourceMipIndex, SourceMipIndexValue); SetTextureParameter( RHICmdList, GetPixelShader(), SourceTexture, SourceTextureSampler, TStaticSamplerState<SF_Point, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI(), SourceTextureValue); const int32 MipSize = 1 << (NumMips - SourceMipIndexValue - 1); const float HalfSourceTexelSize = .5f / MipSize; const FVector4 Sample01Value(-HalfSourceTexelSize, -HalfSourceTexelSize, HalfSourceTexelSize, -HalfSourceTexelSize); const FVector4 Sample23Value(-HalfSourceTexelSize, HalfSourceTexelSize, HalfSourceTexelSize, HalfSourceTexelSize); SetShaderValue(RHICmdList, GetPixelShader(), Sample01, Sample01Value); SetShaderValue(RHICmdList, GetPixelShader(), Sample23, Sample23Value); }
void SetCS(const FRenderingCompositePassContext& Context, FIntPoint ThreadGroupCountValue, FIntPoint LeftTopOffsetValue, FIntPoint GatherExtent) { const FComputeShaderRHIParamRef ShaderRHI = GetComputeShader(); FGlobalShader::SetParameters(ShaderRHI, Context.View); PostprocessParameter.SetCS(ShaderRHI, Context, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); SetShaderValue(ShaderRHI, ThreadGroupCount, ThreadGroupCountValue); SetShaderValue(ShaderRHI, LeftTopOffset, LeftTopOffsetValue); FVector4 HistogramParametersValue(GatherExtent.X, GatherExtent.Y, 0, 0); SetShaderValue(ShaderRHI, HistogramParameters, HistogramParametersValue); { FVector4 Temp[3]; FRCPassPostProcessEyeAdaptation::ComputeEyeAdaptationParamsValue(Context.View, Temp); SetShaderValueArray(ShaderRHI, EyeAdaptationParams, Temp, 3); } }
void SetVS(const FRenderingCompositePassContext& Context, EStereoscopicPass StereoPass) { const FVertexShaderRHIParamRef ShaderRHI = GetVertexShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); check(GEngine->HMDDevice.IsValid()); FVector2D EyeToSrcUVScaleValue; FVector2D EyeToSrcUVOffsetValue; GEngine->HMDDevice->GetEyeRenderParams_RenderThread(StereoPass, EyeToSrcUVScaleValue, EyeToSrcUVOffsetValue); SetShaderValue(Context.RHICmdList, ShaderRHI, EyeToSrcUVScale, EyeToSrcUVScaleValue); SetShaderValue(Context.RHICmdList, ShaderRHI, EyeToSrcUVOffset, EyeToSrcUVOffsetValue); if (bTimeWarp) { FMatrix startM, endM; GEngine->HMDDevice->GetTimewarpMatrices_RenderThread(StereoPass, startM, endM); SetShaderValue(Context.RHICmdList, ShaderRHI, EyeRotationStart, startM); SetShaderValue(Context.RHICmdList, ShaderRHI, EyeRotationEnd, endM); } }
void SetParameters(FRHICommandList& RHICmdList, int32 SourceMipIndexValue, FTextureRHIRef& SourceTextureValue) { SetShaderValue(RHICmdList, GetPixelShader(), SourceMipIndex, SourceMipIndexValue); SetTextureParameter( RHICmdList, GetPixelShader(), SourceTexture, SourceTextureSampler, TStaticSamplerState<SF_Point, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI(), SourceTextureValue); }
void SetPS(const FRenderingCompositePassContext& Context) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); DeferredParameters.Set(Context.RHICmdList, ShaderRHI, Context.View); { uint32 FrameNumberValue = Context.View.FrameNumber; SetShaderValue(Context.RHICmdList, ShaderRHI, FrameNumber, FrameNumberValue); } { float FrameTimeValue = Context.View.Family->CurrentRealTime; SetShaderValue(Context.RHICmdList, ShaderRHI, FrameTime, FrameTimeValue); } ColorRemapShaderParameters.Set(Context.RHICmdList, ShaderRHI); }
void SetParameters(FRHICommandList& RHICmdList, const FScene* Scene, const FSceneView& View, const FProjectedShadowInfo* ProjectedShadowInfo) { FComputeShaderRHIParamRef ShaderRHI = GetComputeShader(); FGlobalShader::SetParameters(RHICmdList, ShaderRHI, View); ObjectBufferParameters.Set(RHICmdList, ShaderRHI, *(Scene->DistanceFieldSceneData.ObjectBuffers), Scene->DistanceFieldSceneData.NumObjectsInBuffer); ObjectIndirectArguments.SetBuffer(RHICmdList, ShaderRHI, GShadowCulledObjectBuffers.Buffers.ObjectIndirectArguments); CulledObjectBounds.SetBuffer(RHICmdList, ShaderRHI, GShadowCulledObjectBuffers.Buffers.Bounds); CulledObjectData.SetBuffer(RHICmdList, ShaderRHI, GShadowCulledObjectBuffers.Buffers.Data); CulledObjectBoxBounds.SetBuffer(RHICmdList, ShaderRHI, GShadowCulledObjectBuffers.Buffers.BoxBounds); SetShaderValue(RHICmdList, ShaderRHI, ObjectBoundingGeometryIndexCount, StencilingGeometry::GLowPolyStencilSphereIndexBuffer.GetIndexCount()); const FMatrix WorldToShadowValue = FTranslationMatrix(ProjectedShadowInfo->PreShadowTranslation) * ProjectedShadowInfo->SubjectAndReceiverMatrix; SetShaderValue(RHICmdList, ShaderRHI, WorldToShadow, WorldToShadowValue); int32 NumPlanes = 0; const FPlane* PlaneData = NULL; FVector4 ShadowBoundingSphereValue(0, 0, 0, 0); if (ProjectedShadowInfo->bDirectionalLight) { NumPlanes = ProjectedShadowInfo->CascadeSettings.ShadowBoundsAccurate.Planes.Num(); PlaneData = ProjectedShadowInfo->CascadeSettings.ShadowBoundsAccurate.Planes.GetData(); } else if (ProjectedShadowInfo->bOnePassPointLightShadow) { ShadowBoundingSphereValue = FVector4(ProjectedShadowInfo->ShadowBounds.Center.X, ProjectedShadowInfo->ShadowBounds.Center.Y, ProjectedShadowInfo->ShadowBounds.Center.Z, ProjectedShadowInfo->ShadowBounds.W); } else { NumPlanes = ProjectedShadowInfo->CasterFrustum.Planes.Num(); PlaneData = ProjectedShadowInfo->CasterFrustum.Planes.GetData(); ShadowBoundingSphereValue = FVector4(ProjectedShadowInfo->PreShadowTranslation, 0); } check(NumPlanes < 12); SetShaderValue(RHICmdList, ShaderRHI, NumShadowHullPlanes, NumPlanes); SetShaderValue(RHICmdList, ShaderRHI, ShadowBoundingSphere, ShadowBoundingSphereValue); SetShaderValueArray(RHICmdList, ShaderRHI, ShadowConvexHull, PlaneData, NumPlanes); }
void SetParameters(FRHICommandList& RHICmdList, uint32 InputStreamStride, uint32 InputStreamFloatOffset, uint32 InputStreamVertexCount, uint32 OutputBufferFloatOffset, FBoneBufferTypeRef BoneBuffer, FUniformBufferRHIRef UniformBuffer, FShaderResourceViewRHIRef VertexBufferSRV, FRWBuffer& SkinBuffer, const FVector& MeshOrigin, const FVector& MeshExtension) { FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader(); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinMeshOriginParameter, MeshOrigin); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinMeshExtensionParameter, MeshExtension); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinInputStreamStride, InputStreamStride); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinInputStreamVertexCount, InputStreamVertexCount); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinInputStreamFloatOffset, InputStreamFloatOffset); SetShaderValue(RHICmdList, ComputeShaderRHI, SkinOutputBufferFloatOffset, OutputBufferFloatOffset); if (UniformBuffer) { SetUniformBufferParameter(RHICmdList, ComputeShaderRHI, GetUniformBufferParameter<GPUSkinCacheBonesUniformShaderParameters>(), UniformBuffer); } else { RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, BoneMatrices.GetBaseIndex(), BoneBuffer.VertexBufferSRV); } RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, SkinInputStream.GetBaseIndex(), VertexBufferSRV); RHICmdList.SetUAVParameter( ComputeShaderRHI, SkinCacheBufferRW.GetBaseIndex(), SkinBuffer.UAV ); }
void SetPS(const FRenderingCompositePassContext& Context, FIntRect SrcRect, FIntPoint SrcBufferSize, EStereoscopicPass StereoPass, FMatrix& QuadTexTransform) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Bilinear,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); DeferredParameters.Set(Context.RHICmdList, ShaderRHI, Context.View); { check(GEngine->HMDDevice.IsValid()); TSharedPtr< class IHeadMountedDisplay > HMDDevice = GEngine->HMDDevice; check (StereoPass != eSSP_FULL); if (StereoPass == eSSP_LEFT_EYE) { FTexture* TextureLeft = HMDDevice->GetDistortionTextureLeft(); SetTextureParameter(Context.RHICmdList, ShaderRHI, DistortionTextureParam, DistortionTextureSampler, TextureLeft->SamplerStateRHI, TextureLeft->TextureRHI); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureScale, HMDDevice->GetTextureScaleLeft()); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureOffset, HMDDevice->GetTextureOffsetLeft()); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureUVOffset, 0.0f); } else { FTexture* TextureRight = HMDDevice->GetDistortionTextureRight(); SetTextureParameter(Context.RHICmdList, ShaderRHI, DistortionTextureParam, DistortionTextureSampler, TextureRight->SamplerStateRHI, TextureRight->TextureRHI); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureScale, HMDDevice->GetTextureScaleRight()); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureOffset, HMDDevice->GetTextureOffsetRight()); SetShaderValue(Context.RHICmdList, ShaderRHI, TextureUVOffset, -0.5f); } QuadTexTransform = FMatrix::Identity; } }
void SetParameters(const FRenderingCompositePassContext& Context, float InRadius) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); DeferredParameters.Set(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Bilinear,AM_Border,AM_Border,AM_Border>::GetRHI()); { FVector4 ColorScale(InRadius, 0, 0, 0); SetShaderValue(Context.RHICmdList, ShaderRHI, NoiseParams, ColorScale); } }
void SetParameters(const FSceneView& View, const FMaterialRenderProxy* MaterialProxy, const FDeferredDecalProxy& DecalProxy) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FMaterialShader::SetParameters(ShaderRHI, MaterialProxy, *MaterialProxy->GetMaterial(GRHIFeatureLevel), View, true, ESceneRenderTargetsMode::SetTextures); FTransform ComponentTrans = DecalProxy.ComponentTrans; // 1,1,1 requires no scale // ComponentTrans = ComponentTrans.GetScaled(GDefaultDecalSize); FMatrix WorldToComponent = ComponentTrans.ToMatrixWithScale().Inverse(); // Set the transform from screen space to light space. if(ScreenToDecal.IsBound()) { const FMatrix ScreenToDecalValue = FMatrix( FPlane(1,0,0,0), FPlane(0,1,0,0), FPlane(0,0,View.ViewMatrices.ProjMatrix.M[2][2],1), FPlane(0,0,View.ViewMatrices.ProjMatrix.M[3][2],0) ) * View.InvViewProjectionMatrix * WorldToComponent; SetShaderValue(ShaderRHI, ScreenToDecal, ScreenToDecalValue); } // Set the transform from light space to world space (only for normals) if(DecalToWorld.IsBound()) { const FMatrix DecalToWorldValue = ComponentTrans.ToMatrixNoScale(); // 1,1,1 requires no scale // DecalToWorldValue = DecalToWorldValue.GetScaled(GDefaultDecalSize); SetShaderValue(ShaderRHI, DecalToWorld, DecalToWorldValue); } }
void SetParameters(FRHICommandList& RHICmdList, const FSceneView& View, const FIntPoint& Size, FShaderResourceViewRHIParamRef ShaderResourceView ) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(RHICmdList, ShaderRHI, View ); const FVector2D InvSize( 1.0f / Size.X, 1.0f / Size.Y ); SetShaderValue(RHICmdList, ShaderRHI, InvSizeParameter, InvSize ); //SetTextureParameter( ShaderRHI, TextureParameter, TextureParameterSampler, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI(), Texture ); SetSRVParameter(RHICmdList, ShaderRHI, TextureParameter, ShaderResourceView ); SetSamplerParameter(RHICmdList, ShaderRHI, TextureParameterSampler, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI() ); }
void SetParameters(const FRenderingCompositePassContext& Context) { const FFinalPostProcessSettings& Settings = Context.View.FinalPostProcessSettings; const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Point, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI()); DeferredParameters.Set(Context.RHICmdList, ShaderRHI, Context.View); { float RoughnessMaskScale = ComputeRoughnessMaskScale(Context, SSRQuality); FLinearColor Value( FMath::Clamp(Context.View.FinalPostProcessSettings.ScreenSpaceReflectionIntensity * 0.01f, 0.0f, 1.0f), RoughnessMaskScale, 0, 0); SetShaderValue(Context.RHICmdList, ShaderRHI, SSRParams, Value); } { const FVector2D HZBUvFactor( float(Context.View.ViewRect.Width()) / float(2 * Context.View.HZBMipmap0Size.X), float(Context.View.ViewRect.Height()) / float(2 * Context.View.HZBMipmap0Size.Y) ); const FVector4 HZBUvFactorAndInvFactorValue( HZBUvFactor.X, HZBUvFactor.Y, 1.0f / HZBUvFactor.X, 1.0f / HZBUvFactor.Y ); SetShaderValue(Context.RHICmdList, ShaderRHI, HZBUvFactorAndInvFactor, HZBUvFactorAndInvFactorValue); } }
void SetParameters(const FRenderingCompositePassContext& Context) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); const FPostProcessSettings& Settings = Context.View.FinalPostProcessSettings; FGlobalShader::SetParameters(Context.RHICmdList, ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Bilinear,AM_Border,AM_Border,AM_Border>::GetRHI()); { FLinearColor Col = FLinearColor::White * Settings.BloomIntensity; FVector4 ColorScale(Col.R, Col.G, Col.B, 0); SetShaderValue(Context.RHICmdList, ShaderRHI, ColorScale1, ColorScale); } }
void SetPS(const FRenderingCompositePassContext& Context) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); const FPostProcessSettings& Settings = Context.View.FinalPostProcessSettings; FGlobalShader::SetParameters(ShaderRHI, Context.View); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Bilinear,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); float ExposureScale = FRCPassPostProcessEyeAdaptation::ComputeExposureScaleValue(Context.View); FVector4 BloomThresholdValue(Settings.BloomThreshold, 0, 0, ExposureScale); SetShaderValue(ShaderRHI, BloomThreshold, BloomThresholdValue); }
void SetPS(const FRenderingCompositePassContext& Context) { const FPixelShaderRHIParamRef ShaderRHI = GetPixelShader(); FGlobalShader::SetParameters(ShaderRHI, Context.View); const FPostProcessSettings& Settings = Context.View.FinalPostProcessSettings; const FSceneViewFamily& ViewFamily = *(Context.View.Family); PostprocessParameter.SetPS(ShaderRHI, Context, TStaticSamplerState<SF_Point,AM_Clamp,AM_Clamp,AM_Clamp>::GetRHI()); { FVector4 Temp[3]; FRCPassPostProcessEyeAdaptation::ComputeEyeAdaptationParamsValue(Context.View, Temp); SetShaderValueArray(ShaderRHI, EyeAdaptationParams, Temp, 3); } SetTextureParameter(ShaderRHI, MiniFontTexture, GEngine->MiniFontTexture ? GEngine->MiniFontTexture->Resource->TextureRHI : GSystemTextures.WhiteDummy->GetRenderTargetItem().TargetableTexture); { float InvDisplayGammaValue = 1.0f / ViewFamily.RenderTarget->GetDisplayGamma(); SetShaderValue(ShaderRHI, InverseGamma, InvDisplayGammaValue); } { FVector4 Constants[8]; FilmPostSetConstants(Constants, ~0, &Context.View.FinalPostProcessSettings, false); SetShaderValue(ShaderRHI, ColorMatrixR_ColorCurveCd1, Constants[0]); SetShaderValue(ShaderRHI, ColorMatrixG_ColorCurveCd3Cm3, Constants[1]); SetShaderValue(ShaderRHI, ColorMatrixB_ColorCurveCm2, Constants[2]); SetShaderValue(ShaderRHI, ColorCurve_Cm0Cd0_Cd2_Ch0Cm1_Ch3, Constants[3]); SetShaderValue(ShaderRHI, ColorCurve_Ch1_Ch2, Constants[4]); SetShaderValue(ShaderRHI, ColorShadow_Luma, Constants[5]); SetShaderValue(ShaderRHI, ColorShadow_Tint1, Constants[6]); SetShaderValue(ShaderRHI, ColorShadow_Tint2, Constants[7]); } }
void SetParameters( FRHICommandList& RHICmdList, const FMaterialRenderProxy* MaterialRenderProxy, const FSceneView& View ) { FMeshMaterialShader::SetParameters(RHICmdList, GetPixelShader(), MaterialRenderProxy, *MaterialRenderProxy->GetMaterial(View.GetFeatureLevel()), View, ESceneRenderTargetsMode::SetTextures); float Ratio = View.UnscaledViewRect.Width() / (float)View.UnscaledViewRect.Height(); float Params[4]; Params[0] = View.ViewMatrices.ProjMatrix.M[0][0]; Params[1] = Ratio; Params[2] = (float)View.UnscaledViewRect.Width(); Params[3] = (float)View.UnscaledViewRect.Height(); SetShaderValue(RHICmdList, GetPixelShader(), DistortionParams, Params); }