Raytracing Gems 2에 있는 Chapter 17 USING BINDLESS RESOURCES WITH DIRECTX RAYTRACING 읽고 있는데 진짜 속에 막혔던게 확 내려가고 가슴이 두근거리네 ㅋㅋ 조만간 가능하면.. 정리해봄.. 일단 구현부터..
[일반] Bindless Resource
설양(seolyang)
2022-05-28 23:37
추천 0
댓글 15
다른 게시글
-
최근에 렌더링에 관심이 생겼는데 이 분야는 전망이 어떤가요? [6][일반] 익명(121.165) | 22.05.28추천 0
-
여기 애들 디렉 많이 하네 [4][일반] 익명(211.36) | 22.05.28추천 0
-
왜 루트 시그니처는 루트 시그니처일까.. [4][일반] 설양(seolyang) | 22.05.28추천 0
-
자체 엔진은 떡상한다 [1][일반] 익명(218.154) | 22.05.27추천 0
-
평면 반사에 대해 관심 있는 사람? [6][일반] SausageTas..(sausagetaste) | 22.05.24추천 8
-
D3D11은 비주얼 스튜디오로 디버깅하면 됩니다. [6][일반] C++(rustisbetterthancpp) | 22.05.24추천 3
-
DX12에서 지향/지양할 해야 하는 점 (역) [3][정보/자료] 설양(seolyang) | 22.05.23추천 3
-
형님들 뉴비가 질문올립니다 [12][일반] 익명(121.190) | 22.05.23추천 0
-
MS 그래픽스 샘플에서 PSO 캐싱 샘플 돌려보는데 [4][일반] 설양(seolyang) | 22.05.22추천 0
-
다렉12 루트 시그니쳐 쉐이더마다 다르잖슴 [8][질문] 땔감(gcp24685) | 22.05.22추천 0
bindless 좋기는 한데 resource binding tier 3가 되어야 sampler, cbv,srv,uav 다 무한으로 지원되는게 아쉬움 레이트레이싱 아니라도 bindless지원 폭이 좀 넓었으면 게임 엔진 만들기 훨씬 편했을텐데
질문 하나 하고 싶은게, bindless로 리소스 descriptor range를 설정하면, 예를 들어 레지스터 space 0, space 1에 대해 bindless descriptor range를 셋업 해주고, HLSL에서는 space 0은 Texture2D로, space 1은 Texture3D로 접근한다고 하였을 때. 실제로 command list에 bind되는 Descriptor Heap 내부에서, Texture2D의 Descriptor와 Texture3D의 Descriptor들이 혼재 그러니까, 예를 들어 다음 과 같이 (Texture2D SRV, Texture3D SRV, Texture3D SRV, Texture2D SRV, ...) 배치 되어 있어도
Texture2DTable[0] 은 첫 번째 Texture2D SRV(예시 Descriptor Heap의 idx:0 원소) Texture2DTable[1] 은 두 번째 Texture2D SRV(예시 Descriptor Heap의 idx:3 원소) 로 인식 되는거야?
아니면 그냥 idx 자체는 바인드된 Descriptor Heap 내부의 모든 디스크립터들이 공유해서 섞여있을 때 Texture2DTable[0] -> idx 0 Texture2D SRV Texture2DTable[3] -> idx 3 Texture2D SRV Texture3DTable[1] -> idx 1 Texture3D SRV Texture3DTable[2] -> idx 2 Texture3D SRV 이런식으로 접근해야하는건가?
너가 마지막에 말한 방식으로 잘 알아서 접근해야함
굳 오히려 합리적이여서 좋네ㅋㅋ 고마워 - dc App
다렉에서 정식으로 지원하는 기능임? 뭐라고 검색해야 나오지
레이트레이싱 젬스2 무료니까 찾아서 17 챕터 봐바 - dc App
ㄳㄳ
처음 실행할때 싹 다 바인딩해서 모든 쉐이더가 모든 리소스에 접근할 수 있도록 하는 개념 맞아? 내가 제대로 이해한건가
근데 이러면 성능에 영향있다고 경고 뜨지 않나? 사용하는 레지스터 갯수 * 1024가 일정 이상이면 성능 저하가 있을 수 있다고 hlsl 에러 뱉던데
내가 레이트레이싱을 아직 안해서 그런지 이해하기 상당히 빡쌔네... 리소스를 죄다 바인드 해놓고 렌더 돌릴때마다 GlobalCB에 있는 인덱스 값을 통해 접근한다는건 이해했는데 GlobalCB에 있는 인덱스로 접근한 버퍼에 있는 인덱스 값으로 다른 리소스에 접근하고... 이 부분은 조금 이해가 안간다
GlobalCB는 32비트 루트 상수 이용해서 업로드 하는건가?
ㅇㅇ 맞음 루트 상수 이용함 레이트레이싱 하게 되면 자동으로 알게 되는 개념이니 지금 굳이 배울 필요 없음