2017-05-19 7 views
3

SOのシェーダコードを貼り付けましたが、プロジェクトが機能しなくなりました。エラーX3000:シェーダファイルの不正な文字

  • 汚染されたコード行を削除しました。

  • Unity forumsに示唆されているように、VS、メモ帳、メモ帳++を使って複数回シェーダを書き直しました。

  • メモ帳++で16進エディタビューを使用しましたが、最初の2バイトは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; 
} 

enter image description here

答えて

3

これは、エンコーディングの問題でした。私はコードの行を貼り付けたときに何とか私のコンパイラは、ASCIIの代わりにすべてのテキストファイルをユニコードとして扱うようにしました。これにより問題が発生しました。
Visual Studioでシェーダファイルを開き、
ファイル - >名前を付けて保存 - >エンコードで保存に移動し、正しい形式を選択してソリューションを再構築していました。

enter image description here enter image description here