I am in trouble at trying to pass a big amount of variables needed for my pixel shader computations.
After trying and failing to link my struct to a cbuffer (data alignement mismatch) I tried passing my variables first to the vertex shader (with an D3D11_INPUT_ELEMENT_DESC / CreateInputLayout) with the intent to link them to the pixel shader through semantics but I hit the 32 shader inputs limit.
I am really stuck (and quite a noob at DX). What is a common / standard way to do this ? Can I only rely on a cbuffer ? Is creating a D3D11_INPUT_ELEMENT_DESC / CreateInputLayout even possible for the pixel shader ?
Example struct I want to pass to my pixel shader :
struct SceneParamsInterface { bool DEAOEnabled; XMFLOAT4 DEAOColor; double DEAOPow; bool lightEnabled; XMFLOAT4 lightColor; XMFLOAT3 lightDirection; bool lightMultiply; double lightMultiplyFactor; bool ambiantLightEnabled; XMFLOAT4 ambiantLightColor; bool HSEnabled; int HSSpread; bool fogEnabled; XMFLOAT4 fogColor; double fogDistanceMax; bool glowEnabled; XMFLOAT4 glowColor; double glowRadius; XMFLOAT4 skyColor; bool skyBoxEnabled; //uniform sampler2D skyBoxTexture; int skyBoxScheme0; // top int skyBoxScheme1; // left int skyBoxScheme2; // front int skyBoxScheme3; // right int skyBoxScheme4; // back int skyBoxScheme5; // bottom int skyBoxRotate; double skyBoxRotateSpeed; XMFLOAT3 skyBoxRotateAround; bool orbitTrapsEnabled; int orbitTrapsId; XMFLOAT4 objectColor; }; Thanks!