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

Svi*_*mpe 6 shader character-encoding directx-11

我从SO粘贴了一行着色器代码,现在我的项目拒绝工作.

  • 我删除了污染的代码行.

  • 我在Unity论坛上建议使用VS,Notepad和Notepad ++从头开始多次重写着色器.

  • 我在Notepad ++中使用了十六进制编辑器视图来排除前两个字节不是0xFE 0xFF这个gamedev问题上的建议.

我真的无法想出这个.我很感激您的任何建议.

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;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Svi*_*mpe 12

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

在此输入图像描述 在此输入图像描述