DirectX

7.3 패스별 상수 버퍼

Awesome Red Tomato 2022. 1. 6. 02:08
std::unique_ptr<UploadBuffer<PassConstants>> PassCB = nullptr;

 

이 버퍼는 하나의 렌더링 패스 전체에서 변하지 않는 상수 자료를 저장한다.

// FrameResource.h
struct PassConstants
{
	// 변하지 않는 상수 버퍼(시야 행렬, 투영 행렬, 시점 위치 등) 자료들.

	XMFLOAT4X4 View = MathHelper::Identity4x4();
	XMFLOAT4X4 Proj = MathHelper::Identity4x4();
	XMFLOAT4X4 InvView = MathHelper::Identity4x4();
	XMFLOAT4X4 InvProj = MathHelper::Identity4x4();
	XMFLOAT4X4 ViewProj = MathHelper::Identity4x4();
	XMFLOAT4X4 InvViewProj = MathHelper::Identity4x4();

	XMFLOAT3 EyePosW = { 0.0f, 0.0f, 0.0f };

	float cbPerObjectPad1 = 0.0f;

	XMFLOAT2 RenderTargetSize = { 0.0f,0.0f };
	XMFLOAT2 InvRenderTargetSize = { 0.0f,0.0f };

	float NearZ = 0.0f;
	float FarZ = 0.0f;
	float TotalTime = 0.0f;
	float DeltaTime = 0.0f;
};

 

상수 버퍼를 만들었으니 셰이더도 수정해준다.

// color.hlsl
cbuffer cbPass : register(b1)
{
    float4x4 gView;
    float4x4 gInvView;
    float4x4 gProj;
    float4x4 gInvProj;
    float4x4 gViewProj;
    float4x4 gInvViewProj;

    float3 gEyePosW;

    float cbPerObjectPad1;

    float2 gRenderTargetSize;
    float2 InvRenderTargetSize;

    float gNearZ;
    float gFarZ;
    float gTotalTime;
    float gDeltaTime;
}

 

'DirectX' 카테고리의 다른 글

7.5 도형 예제  (0) 2022.01.06
7.4 도형 기하구조  (0) 2022.01.06
7.2 렌더 항목  (0) 2022.01.06
7.1 프레임 자원  (0) 2022.01.05
6.10 기하구조 보조 구조체  (0) 2022.01.03