해결된 질문
작성
·
405
1
안녕하세요 rendermanager 구조정리 강의를 듣기전에
여러 shader 를 이용하기 위해서 rendermanager 를 바꾸려고 고민해봤습니다. 강사님처럼 shader class 내로 포함시키는 것도 고민해봤는데 그러면 강사님께서 말씀했다시피 camera 나 light 에서 데이터를 psuh해주는 부분이 애매해지더라구요
그래서 저는 rendermanager 에서 constantbuffer ,effectbuffer 를 unorderedmap<uint64, 버퍼> 이런식으로 shader 주소를 이용해서 해쉬맵을 만드는 방법을 생각해봤습니다.
RENDER->init(shader) 를 하면 그 셰이더를 위한 버퍼들을 map 에 추가하고
RENDER->push 할때 인자로 shader 를 주면 unorderedmap 에서 그 셰이더에 맞는 버퍼를 이용하고 인자를 주지 않으면 모든 shader 에 데이터를 넣주는 방식으로요 (카메라 라이트용)
그런데 제가 느끼기에는 강사님이 하신것처럼 shader class 에서 처리를 해주는게 더 깔끔하고 직관적으로 보이는데
혹시 강사님께서는 rendermanager 에서 모든 셰이더들의 버퍼를 저장해놓고 shader를 인자로 받아서 처리하는 거에 대해 어떻게 생각하시는지요
좋은 강의 감사합니다!
답변 1
1
사실 저도 정확한 답은 고민중이지만
언젠가 언리얼 소스코드 분석을 진행한다면
이런 부분들을 어떻게 처리했나 알 수 있지 않을까 싶네요!
그리고 너무 싱글톤과 인스턴싱 하드코딩 등이 들어가는데
원래라면 이런 부분은 DX12 강의처럼 총괄적으로 관리하여
옵션을 선택할 수 있게 만드는게 맞을 것 같습니다.