Optimize material shaders binding by caching time param once per draw pass
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "Engine/Graphics/GPUDevice.h"
|
||||
#include "Engine/Graphics/Shaders/GPUConstantBuffer.h"
|
||||
#include "Engine/Graphics/Shaders/GPUShader.h"
|
||||
#include "Engine/Engine/Time.h"
|
||||
#include "DecalMaterialShader.h"
|
||||
#include "PostFxMaterialShader.h"
|
||||
#include "ForwardMaterialShader.h"
|
||||
@@ -17,6 +18,33 @@
|
||||
#include "DeformableMaterialShader.h"
|
||||
#include "VolumeParticleMaterialShader.h"
|
||||
|
||||
IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderContext& renderContext)
|
||||
: GPUContext(context)
|
||||
, RenderContext(renderContext)
|
||||
, FirstDrawCall(nullptr)
|
||||
, DrawCallsCount(0)
|
||||
, TimeParam(Time::Draw.UnscaledTime.GetTotalSeconds())
|
||||
{
|
||||
}
|
||||
|
||||
IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderContext& renderContext, const DrawCall& drawCall)
|
||||
: GPUContext(context)
|
||||
, RenderContext(renderContext)
|
||||
, FirstDrawCall(&drawCall)
|
||||
, DrawCallsCount(1)
|
||||
, TimeParam(Time::Draw.UnscaledTime.GetTotalSeconds())
|
||||
{
|
||||
}
|
||||
|
||||
IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderContext& renderContext, const DrawCall* firstDrawCall, int32 drawCallsCount)
|
||||
: GPUContext(context)
|
||||
, RenderContext(renderContext)
|
||||
, FirstDrawCall(firstDrawCall)
|
||||
, DrawCallsCount(drawCallsCount)
|
||||
, TimeParam(Time::Draw.UnscaledTime.GetTotalSeconds())
|
||||
{
|
||||
}
|
||||
|
||||
GPUPipelineState* MaterialShader::PipelineStateCache::InitPS(CullMode mode, bool wireframe)
|
||||
{
|
||||
Desc.CullMode = mode;
|
||||
|
||||
Reference in New Issue
Block a user