Revision Difference
Constant_Buffers#545914
<cat>Code.Shader</cat>⤶
<title>Constant Buffers</title>⤶
⤶
# What are constant buffers⤶
⤶
Constant buffer or "cbuffers" as known by HLSL is a buffer/struct which is stored in GPU memory and can be accessed within your shader. Once the file is included you should be able to access the cbuffer like a regular variable within your shader.⤶
⤶
An example of its usage can be seen below:⤶
⤶
```⤶
VS⤶
{⤶
#include "common/vertex.hlsl"⤶
#include "common.fxc" // Contains PerViewConstantBuffer_t⤶
⤶
//⤶
// Main⤶
//⤶
PixelInput MainVs( INSTANCED_SHADER_PARAMS( VS_INPUT i ) )⤶
{⤶
PixelInput o = ProcessVertex( i );⤶
o.vPositionWs.z += sin(g_flTime) * 5.0f; // wiggle⤶
return FinalizeVertex( o );⤶
}⤶
}⤶
```⤶
⤶
## PerViewConstantBuffer_t⤶
⤶
Usage: `#include "common.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| float4x4 | g_matWorldToProjection | |⤶
| float4x4 | g_matProjectionToWorld | |⤶
| float4x4 | g_matWorldToView | |⤶
| float4x4 | g_matViewToProjection | |⤶
| float4 | g_vInvProjRow3 | |⤶
| float4 | g_vClipPlane0 | |⤶
| float | g_flToneMapScalarLinear | |⤶
| float | g_flLightMapScalar | |⤶
| float | g_flEnvMapScalar | |⤶
| float | g_flToneMapScalarGamma | |⤶
| float3 | g_vCameraPositionWs | The world position of the camera |⤶
| float | g_flViewportMinZ | |⤶
| float3 | g_vCameraDirWs | The current camera direction |⤶
| float | g_flViewportMaxZ | |⤶
| float3 | g_vCameraUpDirWs | |⤶
| float | g_flTime | The time since the client has connected |⤶
| float3 | g_vDepthPsToVsConversion | |⤶
| float | g_flNearPlane | NearZ |⤶
| float | g_flFarPlane | FarZ |⤶
| float | g_flLightBinnerFarPlane | |⤶
| float2 | g_vInvViewportSize | |⤶
| float2 | g_vViewportToGBufferRatio | |⤶
| float2 | g_vMorphTextureAtlasSize | |⤶
| float4 | g_vInvGBufferSize | |⤶
| float | g_flOOTransformTextureWidth | |⤶
| float | g_flOOTransformTextureHeight | |⤶
| float2 | g_vViewportOffset | |⤶
| float2 | g_vViewportSize | |⤶
| float2 | g_vRenderTargetSize | |⤶
| float | g_flFogBlendToBackground | |⤶
| float | g_flHenyeyGreensteinCoeff | |⤶
| float3 | g_vFogColor | |⤶
| float | g_flNegFogStartOverFogRange | |⤶
| float | g_flInvFogRange | |⤶
| float | g_flFogMaxDensity | |⤶
| float | g_flFogExponent | |⤶
| float | g_flMod2xIdentity | |⤶
| float2 | g_bRoughnessParams | |⤶
| bool | g_bUseRoughnessCone | |⤶
| bool | g_bUseRoughnessEllipse | |⤶
| float | g_bStereoEnabled | |⤶
| float | g_flStereoCameraIndex | |⤶
| float3 | g_vMiddleEyePositionWs | |⤶
| float | g_flPad2 | Padding for alignment, unused |⤶
| float4x4 | g_matWorldToProjectionMultiview[ 2 ] | |⤶
| float4 | g_vCameraPositionWsMultiview[ 2 ] | |⤶
| float4 | g_vFrameBufferCopyInvSizeAndUvScale | |⤶
| float4 | g_vCameraAngles | |⤶
| float4 | g_vWorldToCameraOffset | |⤶
| float4 | g_vWorldToCameraOffsetMultiview[ 2 ] | |⤶
| float4 | g_vPerViewConstantExtraData0 | |⤶
| float4 | g_vPerViewConstantExtraData1 | |⤶
| float4 | g_vPerViewConstantExtraData2 | |⤶
| float4 | g_vPerViewConstantExtraData3 | |⤶
| float4x4 | m_matPrevProjectionToWorld | |⤶
⤶
## PerViewLightingConstantBuffer_t⤶
⤶
Usage: `#include "common.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| float | g_flInvPointLightTextureWidth | |⤶
| float | g_flInvSpotLightTextureWidth | |⤶
| float | g_flInvLightTransformTextureWidth | |⤶
| float | g_flInvLightTextureHeight | |⤶
| float4 | g_vLightBinCounts | |⤶
| float2 | g_vLowResDeferredLightingTextureDim | |⤶
| float2 | g_vLowResDeferredLightingTextureInvDim | |⤶
| float3 | g_vToolsAmbientLighting | |⤶
| float | g_flSSAOEnabled | |⤶
| float3 | g_vIrradAtlasInvSize | |⤶
| float | g_flIrradGlobalLightingFactor | |⤶
| float4 | g_vGlobalLightingSHRed | |⤶
| float4 | g_vGlobalLightingSHGreen | |⤶
| float4 | g_vGlobalLightingSHBlue | |⤶
| float3 | g_vRayleighScatteringCoeff | |⤶
| float | g_flMieScatteringEccentricity | |⤶
| float3 | g_vMieScatteringCoeff | |⤶
| float | g_flMieForwardScatteringRatio | |⤶
| float3 | g_vSpecularCubeMapScale | |⤶
| float | g_flDefaultEnvMapIndex | |⤶
| float4 | g_vLightCookieSheetSequenceAndSizes | |⤶
| float3 | g_vLpvBoxMinCascade0 | |⤶
| float | g_flLpvBrightnessScale | |⤶
| float3 | g_vLpvInvBoxDimCascade0 | |⤶
| float2 | g_vLpvInvCoeffTextureDim | |⤶
⤶
## PerLayerConstantBuffer_t⤶
⤶
Usage: `#include "common.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| float4 | g_vWireframeColor | The wireframe color for the current rendering layer(mat_wireframe N) |⤶
⤶
⤶
## PerViewConstantBufferVR_t⤶
⤶
Usage: `#include "vr_common.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| bool | g_bVolumetricFogEnabled | |⤶
| bool | g_bGradientFogEnabled | |⤶
| bool | g_bCubemapFogEnabled | |⤶
| bool | g_bSphericalVignetteEnabled | |⤶
| bool | g_bAmbientOcclusionProxiesEnabled | |⤶
| float4 | g_vAoProxyDownres | |⤶
| float | g_flExcitationAmount | Xen animations |⤶
| float | g_flDepressionAmount | Xen animations |⤶
| float4 | g_vWindDirection | Current wind direction |⤶
| float | g_flWindSpeed | Current wind speed |⤶
| float4 | g_vInteractionProjectionOrigin | |⤶
| float4 | g_vInteractionVolumeInvExtents | |⤶
| float4 | g_vInteractionTriggerVolumeInvMins | |⤶
| float4 | g_vInteractionTriggerVolumeWorldToVolumeScale | |⤶
| float4 | g_vGradientFogBiasAndScale | |⤶
| float4 | m_vGradientFogExponents | |⤶
| float4 | g_vGradientFogColor_Opacity | |⤶
| float4 | g_vGradientFogCullingParams | |⤶
| float | g_flCubeFogOffset | |⤶
| float | g_flCubeFogScale | |⤶
| float | g_flCubeFogBias | |⤶
| float | g_flCubeFogExponent | |⤶
| float | g_flCubeFogHeightOffset | |⤶
| float | g_flCubeFogHeightScale | |⤶
| float | g_flCubeFogHeightExponent | |⤶
| float | g_flCubeMapSizeLog2 | |⤶
| float4x4 | g_matvCubeFogSkyWsToOs | |⤶
| float4 | g_vCubeFogCullingParams | |⤶
| float4 | g_vSphericalVignetteBiasAndScale | |⤶
| float4 | g_vSphericalVignetteOrigin_Exponent | |⤶
| float4 | g_vSphericalVignetteColor_Opacity | |⤶
| float | g_flVolFogNearClipPlane | |⤶
| float | g_flVolFogClipPlaneRange | |⤶
| float4 | g_vVolFogDitherScaleBias | |⤶
| float4 | g_vVolFogPostWorldToFrustumScale | |⤶
| float4 | g_vVolFogPostWorldToFrustumBias | |⤶
| float4x4 | g_mVolFogFromWorld[ 2 ] | |⤶
| float4 | g_vHighPrecisionLightingOffsetWs | |⤶
⤶
## SkyConstantBuffer_t⤶
⤶
Usage: `#include "sky.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| float4x3 | g_matSkyOsToWs | Convert from Sky Object Space to Sky World Space |⤶
| float4x3 | g_matSkyWsToOs | Convert from Sky World Space to Sky Object Space |⤶
⤶
## SunLightShaderParamsCB⤶
⤶
Usage: `#include "sun_shadowing.fxc"`⤶
⤶
| Type | Field | Note |⤶
|------|-------|------|⤶
| float4 | g_vSunLightColor | Current sun color |⤶
| float3 | g_vSunLightDir | Current sun direction |⤶
| float | g_flSunNormalizedRadius | |⤶
| float | g_flSunShadowingInvShadowTextureWidth | |⤶
| float | g_flSunShadowingInvShadowTextureHeight | |⤶
| float | g_flSunShadowingHalfInvShadowTextureWidth | |⤶
| float | g_flSunShadowingHalfInvShadowTextureHeight | |⤶
| float | g_flSunShadowingShadowTextureWidth | |⤶
| float | g_flSunShadowingShadowTextureHeight | |⤶
| float | g_flSunShadowingSplitLerpFactorBase | |⤶
| float | g_flSunShadowingSplitLerpFactorInvRange | |⤶
| float | g_flSunShadowingZLerpFactorBase | |⤶
| float | g_flSunShadowingZLerpFactorRange | |⤶
| float4x4 | g_matWorldToShadowTexMatrices[4] | |⤶
| float4 | g_vCascadeAtlasUVOffsets[4] | |⤶
| float4 | g_flCascadeViewShadowBiasScales[4] | |⤶
| int | g_nSunShadowCascadeCount | |⤶