想要自己上传UniformBuffer到shangder上,但是不知道是否遗漏了什么步骤导致shader编译失败。
UniformBuffer的声明部分:
BEGIN_UNIFORM_BUFFER_STRUCT(FMyUniformStructData, )
DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(FVector4, ColorOne)
DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(FVector4, ColorTwo)
DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(FVector4, ColorThree)
DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(FVector4, ColorFour)
DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(uint32, ColorIndex)
END_UNIFORM_BUFFER_STRUCT(FMyUniformStructData)
IMPLEMENT_UNIFORM_BUFFER_STRUCT(FMyUniformStructData, TEXT(“FMyUniform”));
下面是我的shader:
Texture2D MyTexture;
SamplerState MyTextureSampler;
float4 SimpleColor;
void MainVS(
in float4 InPosition : ATTRIBUTE0,
in float2 InUV : ATTRIBUTE1,
out float2 OutUV : TEXCOORD0,
out float4 OutPosition : SV_POSITION
)
{
// screenspace position from vb
OutPosition = InPosition;
OutUV = InUV;
}
void MainPS(
in float2 UV : TEXCOORD0,
out float4 OutColor : SV_Target0
)
{
OutColor = float4(MyTexture.Sample(MyTextureSampler, UV.xy).rgb, 1.0f);
float4 Color = FMyUniform.ColorOne;
OutColor *= Color;
}
编译失败的信息是:
[2018.04.26-02.06.45:274][ 0]LogShaderCompilers: Warning: 1 Shader compiler errors compiling global shaders for platform PCD3D_SM5:
C:/Users/lishuang01/Desktop/ShadingModelTest/Plugins/ShadertestPlugin/Shaders/Private/MyShader.usf(28,20-29): Shader FShaderTestVS, VF None:
error X3004: undeclared identifier ‘FMyUniform’
[2018.04.26-02.06.45:275][ 0]LogShaderCompilers: Error: Errors compiling global shader FShaderTestVS :
[2018.04.26-02.06.45:275][ 0]LogShaderCompilers: Error: /Plugin/ShadertestPlugin/Private/MyShader.usf(28,20-29): error X3004: undeclared identifier ‘FMyUniform’
UE4Editor.exe 已触发了一个断点。
麻烦大神们帮我看看!