shader model以外的宏的設置
static inline void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) { FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment); OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_X"), ThreadGroupSizeX); OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_Y"), ThreadGroupSizeY); OutEnvironment.SetDefine(TEXT("THREADGROUPSIZE_Z"), ThreadGroupSizeZ); OutEnvironment.SetDefine(TEXT("SRC_TYPE"), uint32(SrcType)); OutEnvironment.SetDefine(TEXT("DST_TYPE"), uint32(DstType)); switch (ValueType) { case ECopyTextureValueType::Float: switch (NumChannels) { case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float")); break; case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float2")); break; case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float3")); break; case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("float4")); break; } break; case ECopyTextureValueType::Int32: switch (NumChannels) { case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int")); break; case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int2")); break; case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int3")); break; case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("int4")); break; } break; case ECopyTextureValueType::Uint32: switch (NumChannels) { case 1: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint")); break; case 2: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint2")); break; case 3: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint3")); break; case 4: OutEnvironment.SetDefine(TEXT("VALUE_TYPE"), TEXT("uint4")); break; } break; } }
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) { FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment); CA_SUPPRESS(6313); OutEnvironment.SetDefine(TEXT("ES2_USE_BLOOM"), (UseSunBloom & 1) ? (uint32)1 : (uint32)0); OutEnvironment.SetDefine(TEXT("ES2_USE_SUN"), (UseSunBloom >> 1) ? (uint32)1 : (uint32)0); }
開都可以這麼開
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
這個函數還沒理解好 有待理解
這是用的時候 usf裏
1
[numthreads(THREADGROUPSIZE_X, THREADGROUPSIZE_Y, THREADGROUPSIZE_Z)]
2
#elif DST_TYPE == 2
RWTexture3D <VALUE_TYPE> DstResource;
#define DST_ADDR(p,o) ((p).xyz + (o).xyz)
#endif
3
#if ES2_USE_BLOOM
#endif