inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

Constant Buffer

hlsli 내용이 이해가 안갑니다

370

언리얼컨설팅

작성한 질문수 31

0

강의에 나온 쉐이더 부분의 코드를 보다가,

원래 코드는 ouput.color += offset1로 되어있었는데, offset0으로 해서 실행해 보았습니다. 그런데 최종 결과는 여전히 같더군요.

<실행 결과>

offset0이 의미하는것과 offset1이 의미하는것이 무엇인지 궁금합니다.

 

그리고

위와 같이 TEST_B0와 B1은 각각 다른 버퍼와 연결된 레지스터들을 의미한다고 이해했는데, 그 오른쪽에 b0과 b1은 해당 레지스터를 말하는거구요.

그렇다면 offset0은 b0에 해당하는 내용이므로, 밑의 VS_Main 함수 내부에서 color값을 조정할때는 offset0으로 색깔을 조정해줬어야 한거 같은데, 강의에서는 이 부분에 대해서 offset1로 색깔은 다르게 지정하셨는데 이유가 뭘까요?

 

그리고 위의 사진과 같이 원래라면 VS_Main은 들어오는 변수가 b0에 대한 내용인지 b1인지를 구별하기 위해서 offset0과 offset1을 if문 같은 조건문으로 구별해서 설계를 했어야 할것 같은데, 그 문법이 따로 없이 알아서 동작하는것이 이해가 안갔습니다. 쉐이더 문법이란걸 알지만, 이 부분에 대해서 간단하게라도 설명해주시면 감사하겠습니다!

DirectX 게임수학

답변 1

1

Rookiss


이 내용물 안에서 첫번째 4바이트를 offset0라고 이름 붙여서 접근하는 것이고
이 이름은 무엇이 되더라도 상관없습니다. (whoami 로 해도 OK)

물체를 그릴 때 b0 레지스터의 값을 각기 다른 값으로 설정을 해뒀기 때문에,
각기 결과가 달라지게 됩니다. (C++ 코드 확인 필요)
즉, 쉐이더는 모든 물체를 한 번에 그리는게 아니라
물체마다 하나씩 하나씩 돌아가면서 그리는 것이라고 생각하시면 됩니다.
쉐이더는 앞으로 계속 나오니 지금은 잘 이해가 간다면 넘어가셔도 됩니다.

Lighting 추가하고 나니 프레임이 많이 떨어지는데 원래 이런 건가요?

0

524

0

Deferred Rendering 에서 조명에 Culling이 일어나는 것 같습니다.

1

563

1

static_pointer_cast와 static_cast의 차이가 무엇인가요?

0

1353

1

Engine.lib 파일을 포함 불가

0

617

1

셰이더 VS_Main에서 행렬 곱해줄 때

0

491

2

1:05분 질문(1시간 5분)

0

303

0

오류가 발생합니다

0

479

1

Animation코드가 무한로딩에 걸리네요

0

350

0

fov 관련해서 질문이 있습니다

0

282

0

normal mapping Tangent Space 수학식 질문

0

388

1

커리큘럼 관련 질문 드립니다!

0

278

0

강의를 어떤식으로 들으면 될까요??

0

385

1

머티리얼과 텍스쳐, 셰이더를 따로 관리해도 되나요?

0

444

1

박스 메쉬 생성하는 함수에서 버텍스가 왜 24개인가요

0

245

1

복수개의 서로 다른 동영상을 Picture in Picture 형식으로 rendering하는 가장 최적의 방법이 궁금합니다.

0

262

0

애니메이션 쉐이더에서 행렬보간 부분에 대해 질문드립니다

0

233

0

assert 에서 _currentIndex 와 _elemtSize 를 비교하는게 이해가 잘 안되네요

1

248

1

DX 공부방법에 대해서 질문 있습니다.

0

643

1

Root Parameter 를 정의하는데 있어서 질문있습니다.

0

377

1

Client 콘솔창이 잠깐 켜졌다가 말아요

0

255

1

DirectX12 Root Signature : CBV관련 질문입니다.

0

353

1

뷰 변환 행렬 관련하여

0

632

2

강의 시작!

0

306

1

using namespace Microsoft::WRL;

0

275

1