错误 X3000:着色器文件中的非法字符
error X3000: Illegal character in shader file
我从 SO 粘贴了一行着色器代码,但现在我的项目无法运行。
我删除了被污染的代码行。
我已经按照 Unity forums.
上的建议,使用 VS、Notepad 和 Notepad++ 从头开始多次重写着色器
- 我已经使用 Notepad++ 中的十六进制编辑器视图来排除前两个字节不是
0xFE 0xFF
所建议的 gamedev question。
这个我真的想不通。非常感谢您提出的任何建议。
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 中打开着色器文件并转到
文件->另存为->使用编码保存然后选择正确的格式并重建解决方案。
我从 SO 粘贴了一行着色器代码,但现在我的项目无法运行。
我删除了被污染的代码行。
我已经按照 Unity forums.
上的建议,使用 VS、Notepad 和 Notepad++ 从头开始多次重写着色器
- 我已经使用 Notepad++ 中的十六进制编辑器视图来排除前两个字节不是
0xFE 0xFF
所建议的 gamedev question。
这个我真的想不通。非常感谢您提出的任何建议。
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 中打开着色器文件并转到
文件->另存为->使用编码保存然后选择正确的格式并重建解决方案。