HLSL Vertex Shader und Instancing
-
Folgendes Problem:
Der Nachfolgende Vertex Shader lässt sich ohne Probleme kompilieren (vs_5_0). Allerdings kommt es beim Aufruf von ID3D11Device::CreateVertexShader zum Fehler.Fehler schrieb:
D3D11 ERROR: ID3D11Device::CreateVertexShader: Encoded Vertex Shader size doesn't match specified size. [ STATE_CREATION ERROR #166: CREATEVERTEXSHADER_INVALIDSHADERBYTECODE]
Der Teil mit dem "doesn´t match specified size" ist Bullshit. Aber wo ist dann der Fehler?
cbuffer WorldView { float4x4 WorldViewMatrix; float4x4 ProjectionMatrix; } cbuffer InstanceData { float4x4 ModelMatrix[256]; } struct VertexInputType { float4 pos : POSITION; float2 tex : TEXCOORD; float3 nml : NORMAL; }; struct Output { float4 pos : SV_POSITION; float2 tex : TEXCOORD; float3 nml : NORMAL; }; Output main(VertexInputType vit, uint instanceId : SV_InstanceId) { Output outp; outp.pos = mul(vit.pos, ModelMatrix[instanceId]); outp.pos = mul(outp.pos, WorldViewMatrix); outp.pos = mul(outp.pos, ProjectionMatrix); outp.tex = vit.tex; outp.nml = mul(vit.nml, (float3x3)ModelMatrix[instanceId]); outp.nml = mul(vit.nml, (float3x3)WorldViewMatrix); return outp; }
Wenn ich sämtliche "instanceId" variablen durch konstanten ersetze funktioniert alles.
Irgendjemand ne Idee?
-
Hat sich erledigt, hab bisher meine Shader selber mit D3DCompile kompiliert. Hab das jetzt mal von VS übernehmen lassen und schon funktioniert alles.