38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#include "FTemperatureComputeShader.h"
|
|
#include "GlobalShader.h"
|
|
#include "ShaderParameterStruct.h"
|
|
#include "RHIStaticStates.h"
|
|
#include "Shader.h"
|
|
#include "RHICommandList.h"
|
|
#include "RHIResources.h"
|
|
#include "ShaderParameterUtils.h"
|
|
|
|
// 全局参数存储
|
|
FThreadSafeTemperatureParams GTemperatureParams;
|
|
|
|
// 实现温度传导计算着色器
|
|
// 路径指向MiceShaders插件中的着色器文件
|
|
IMPLEMENT_GLOBAL_SHADER(FTemperatureComputeShader,
|
|
"/MiceShaders/Shaders/Private/TemperatureConductionCS.usf",
|
|
"MainCompute",
|
|
SF_Compute);
|
|
|
|
// 线程安全参数管理实现
|
|
void FThreadSafeTemperatureParams::AddParams(const FTemperatureCSDispatchParams& NewParams)
|
|
{
|
|
FScopeLock Lock(&ParamsCriticalSection);
|
|
PendingParams.Add(NewParams);
|
|
}
|
|
|
|
bool FThreadSafeTemperatureParams::ConsumeParams(FTemperatureCSDispatchParams& OutParams)
|
|
{
|
|
FScopeLock Lock(&ParamsCriticalSection);
|
|
if (PendingParams.Num() > 0)
|
|
{
|
|
OutParams = PendingParams[0];
|
|
PendingParams.RemoveAt(0);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|