• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

hlsli 내용이 이해가 안갑니다

21.09.09 20:01 작성 조회수 227

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문 같은 조건문으로 구별해서 설계를 했어야 할것 같은데, 그 문법이 따로 없이 알아서 동작하는것이 이해가 안갔습니다. 쉐이더 문법이란걸 알지만, 이 부분에 대해서 간단하게라도 설명해주시면 감사하겠습니다!

답변 1

답변을 작성해보세요.

1


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

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