inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Series] Part 2: Game Math and DirectX12

질문있습니다.

176

pakheae

19 asked

0

질문1)

 

D3D12_DESCRIPTOR_RANGE ranges[2] =

{

{ D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND }, // b0 ~ b4

{ D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND } // t0 ~ t4

};

 

CD3DX12_ROOT_PARAMETER rootParameters[1] = {};

rootParameters[0].InitAsDescriptorTable(_countof(ranges), ranges, D3D12_SHADER_VISIBILITY_ALL);

 

와 같이 루트시그니처에서 테이블의 사용범위를 넓게잡아두고

사용할때만 Shader 에서 buffer를 정의 ( ex :cbuffer WVP: register(b0 )해서

사용해주고있는데 테이블힙의 메모리 낭비를 제외하면 성능에 큰 악영향이 있을까요?

런타임에 터지거나 하는 오류는 현재 없는데 궁금해서 여쭤봅니다.

 

질문2)제목 없음.png제가 이해한게 맞나 궁금해서 질문드립니다.

질문1의 방식처럼 rootSignature 를 만들었다고 하였을때 ,

SetGraphicsRootDescriptorTable 함수인자에 핸들값을 넣을때

RootSignature 에서는 b0~b5 ,t0~t5 의 총10개를 사용한다고 서명했기떄문에 ,

DX에서 읽을때 10개단위로 읽어주기 때문에 선두에 있는 handle 값만 넣어주는 방식이 맞나요?

directx 게임수학

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

pakheae님의 질문에 답변드리겠습니다.

질문1) 루트 시그니처에서 데스크립터 테이블의 사용 범위를 넓게 잡아 두고 실제 사용 시에만 쉐이더에서 버퍼를 정의하여 사용하는 경우, 테이블 힙의 메모리 낭비는 있을 수 있지만, 실제 성능에 미치는 악영향은 크지 않습니다. 다만, 루트 시그니처와 데스크립터 테이블을 효율적으로 설계하여 사용하는 것이 좋으며, 이는 메모리 사용 최적화와 관리 측면에서 이점을 줄 수 있습니다.

질문2) 제공하신 이미지와 내용에 따르면, SetGraphicsRootDescriptorTable 함수의 인자로 핸들 값을 넣을 때, RootSignature에서 선언한 f b0~b5, t0~t5까지 총 10개의 데스크립터를 사용한다고 가정했을 때, DX는 이를 10개 단위로 읽어 들이는 방식이 맞습니다. 이때 선두에 있는 핸들 값을 기준으로 연속된 메모리 블록을 참조하여 필요한 정보를 가져오게 됩니다. 이미지 설명을 바탕으로 한 설명이 정확하게 해당 사핞을 이해하셨습니다.

도움이 되었기를 바랍니다. 추가적인 질문이나 궁금하신 점이 있으시다면 언제든지 문의해 주세요.

복습중에 커맨드 큐 관련 질문이 있습니다.

0

33

1

_vsBlob와 _psBlob에서 nullptr이 뜨면서 실행이 안됩니다

0

56

1

#include d3dx12.h 추가했지만 오류

0

81

1

LNK1104 error, DirectXTexD.lib 파일을 열 수 없습니다.

0

122

1

[DirectXTex LNK2019 에러]

0

243

2

UI 랜더링이 이해가 안되어 질문드립니다

0

175

1

insideTess 값 관련 질문

0

125

1

렌더 타겟을 SRV로 사용하려고 합니다.

0

181

1

C++ 언어 표준과 Engine.lib 오류에 관하여..

0

280

2

실행과정에서의 문제

0

393

3

결과물에 의문이 생겨서 한가지 질문 드립니다

0

147

1

uv좌표변환

0

147

1

Shader 관련 문제

0

222

1

Load 부분에서 문제가 있어 질문드립니다

0

162

1

강의에서 보여진 모습과 다른모양이 되어서 질문드립니다

0

173

1

enumclass 질문입니다

0

152

1

nullptr오류가 발생해요.

0

362

2

Normal Mapping / Assertion failed! 오류

0

219

1

1>LINK : fatal error LNK1104: 'Engine.lib' 파일을 열 수 없습니다.

0

429

2

shared_ptr 과 헤더파일 관련하여 질문있습니다

0

206

1

장치 초기화 nullptr이 자꾸 발견 되네요.

0

299

2

용 모델에 분명 Diffuse 텍스쳐가 있는것같은데 왜 적용이 안되나요?

0

251

1

안녕하세요 질문있습니다

0

203

1

DirectX11 강의 질문

0

352

1