d3d9: float4x4 mView : register(c0); float4x4 mProj : register(c4); float4x4 mInvView : register(c8); float3 cameraPos : register(c12); float4 timeVals : register(c13); float3 gAmbLightColor : register(c14); float3 gDirLightDir : register(c15); float3 gDirLightColor : register(c16); d3d11: cbuffer core_data : register(b0) { matrix mView; matrix mProj; matrix mInvView; float3 cameraPos; float4 timeVals; float3 gAmbLightColor; float3 gDirLightDir; float3 gDirLightColor; } gles2: mat4 mView; mat4 mProj; mat4 mInvView; vec3 cameraPos; vec4 timeVals; vec3 gAmbLightColor; vec3 gDirLightDir; vec3 gDirLightColor; gl4.2+ (3.1-4.2 without binding=0): layout(std140, binding = 0) uniform core_data { mat4 mView; mat4 mProj; mat4 mInvView; vec3 cameraPos; vec4 timeVals; vec3 gAmbLightColor; vec3 gDirLightDir; vec3 gDirLightColor; } macros: (ignore typenames, they can be re#defined) UNIFORM_BLOCK(core_data, 0) { UNIFORM_VAR(matrix mView, 0); UNIFORM_VAR(matrix mProj, 4); UNIFORM_VAR(matrix mInvView, 8); UNIFORM_VAR(float3 cameraPos, 12); UNIFORM_VAR(float4 timeVals, 13); UNIFORM_VAR(float3 gAmbLightColor, 14); UNIFORM_VAR(float3 gDirLightDir, 15); UNIFORM_VAR(float3 gDirLightColor, 16); }