错误 X3000:着色器文件中的非法字符

error X3000: Illegal character in shader file

我从 SO 粘贴了一行着色器代码,但现在我的项目无法运行。

这个我真的想不通。非常感谢您提出的任何建议。

cbuffer CB_PER_FRAME : register(b0)
{
    column_major float4x4 view;
    column_major float4x4 proj;
    float4 eyePosition;
};

struct VertexInput
{
    float3 position : POSITION;
    float3 normal   : NORMAL;
    float2 texCoord : TEXCOORD;

    row_major float4x4 world : WORLD;
    float4 color : COLOR;
    uint instanceID : SV_InstanceID;
};

struct PixelInput
{
    float4 position : SV_POSITION;
    float3 normal   : NORMAL;
    float2 texCoord : TEXCOORD;
    float4 color    : COLOR;
};

PixelInput VertexShaderMain( VertexInput vertexInput )
{
    PixelInput pixelInput (PixelInput)0;

    pixelInput.position = mul( float4( pixelInput.position, 1.0f ), vertexInput.world );
    pixelInput.position = mul( pixelInput.position, view );
    pixelInput.position = mul( pixelInput.position, proj );

    pixelInput.normal = normalize( mul( pixelInput.normal, (float3x3)vertexInput.world ) );
    pixelInput.texCoord = vertexInput.color;
    pixelInput.color = vertexInput.color;

    return pixelInput;
}

float4 PixelShaderMain( PixelInput pixelInput ) : SV_Target
{
    return pixelInput.color;
}

这是一个编码问题。当我粘贴代码行时,它以某种方式使我的编译器将每个文本文件视为 UNICODE 而不是 ASCII。这导致了问题。
解决方案是在 Visual Studio 中打开着色器文件并转到
文件->另存为->使用编码保存然后选择正确的格式并重建解决方案。