12하다가 너무 어려워서 11로 넘어왔는데 인풋 레이아웃이랑 상수버퍼 등등 셰이더로 넘겨줄 때 전부 역순으로 넣어줘야됩니까?
[일반] 형님들 뉴비가 질문올립니다
익명(121.190)
2022-05-23 13:50
추천 0
댓글 12
다른 게시글
-
MS 그래픽스 샘플에서 PSO 캐싱 샘플 돌려보는데 [4][일반] 설양(seolyang) | 22.05.22추천 0
-
다렉12 루트 시그니쳐 쉐이더마다 다르잖슴 [8][질문] 땔감(gcp24685) | 22.05.22추천 0
-
g버퍼 이미지 보면 뭔가 앤드워홀 같지 않음? [1][일반] 민트초코카..(kwonhuckjin) | 22.05.19추천 0
-
Godot으로 Godot 빌드가 가능하다는데 [3][일반] 계란조아(whysearchme) | 22.05.17추천 0
-
나도 그래픽스 공부겸 자체엔진 레포 만들었다 [2][일반] 계란조아(whysearchme) | 22.05.17추천 1
-
여기 대단한사람들 많구나[일반] 흙수저(amitige6) | 22.05.17추천 0
-
Vulkan LunarG 예제 중에 [2][질문] 익명(222.111) | 22.05.17추천 0
-
다렉에서 쉐이더 컴파일 미리 하는 방법 아는 사람 있음? [5][질문] 익명(114.202) | 22.05.16추천 0
-
GPU Pro, Zen 시리즈에서 개인적으로 읽고 싶은 아티클 목록[일반] 설양(seolyang) | 22.05.15추천 1
-
행/열 우선 행렬과 행/열 벡터 [13][정보/자료] 설양(seolyang) | 22.05.13추천 7
역순이 무슨 이야기를 하는지는 모르겠는데 나는 쉐이더를 Set해놓고 상수버퍼 인풋레이아웃 넣는게 일반적이라고 알고있음
엄.. 그니깐 cpp에서 struct Params { a; b; c; }인 구조체를 넘겨준다면 셰이더에서 struct Params : r2gister(b0) { c; b; a;) 이렇게요! 레이아웃도 layout[] = {"Position", ~~ }, { "Texcoord", ~~~} 로 넘겨줬으면 셰이더에서 struct VSInput { float2 uv : TEXCOORD; float3 pos : POSITION } 이런식으로 역순이요
?? 대체 무슨 이상한 이야기를 들은거지 모르겠는데 전혀 그렇게 해줄 필요 없음. 행렬 Transpose 때문에 그렇게 생각한거라면 행렬에만 적용되는 부분이니 그것만 유의하셈
근데 계속 안돼서 바꿔하니 돼요.. 행렬 넘겨줄 때 row_major 해주는거 말고 구조체 요소들 역순으로 넣어줘야만 정상적으로 실행되더라구요.. 12할 땐 넣어준 그대로 넘겨줬는데..!!
패딩을 잘못했다거나 뭔가 잘못 넣어준게 있는거같은데... 역순으로 넣는다는건 전혀 듣도보도 못했음
그래픽스 디버거를 사용해서 잘 들어가고 있는지 확인해보셈. 다렉12에는 pix가 있는데 11에는 뭐가 있는지 잘 모르겠네
RenderDoc도 있고 NVIDIA Nsight 도 있고 - dc App
Nsight 가 좋드라 - dc App
Chili 유튜브 보면서 하고있는데 거기에도 저렇게 역순으로 적어놨심다
애초에 Vertex Input Layout은 Semantics를 메모리 데이터의 offset, size, stride에 바인드 하기 때문에 순서는 상관없을 것 같은데.. 상수 버퍼의 경우엔 역순으로 넣는게 이해는 안가네.. 애초에 바인드 해줬을 때, GPU 쪽에선 너가 넘겨준 데이터가 struct Params 인지 뭔지 전혀 신경을 안씀 그냥 바인드 된 쉐이더 상의 상수 버퍼의 형태를, 넘겨받은 바이트에 그대로 맵핑하는거지
다만 쉐이더 상수 버퍼 정의에서 packoffset 으로 들어오는 데이터의 offset을 지정해준다면 가능할 것 같긴한데 해보진 않음.. 보통 그렇게 안하니까.. cbuffer Params { float4 c : packoffset(c2); float4 b : packoffset(c1); float4 a : packoffset(c0): } 같이
D3D11은 그냥 비주얼스튜디오로 디버깅하면 됨