묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨DirectX Raytracing Programming
MeshObject 공용 사용 방법
CGame::CreateGameObjectAsBox에서 "meshobject를 공용으로 쓰도록 한다."는 주석이 있는데, 실제로 디버깅해보면 오브젝트마다 새로운 메쉬오브젝트를 할당하는거 같습니다.각 게임 오브젝트가 메쉬 오브젝트를 공용으로 사용하도록 바꿔도 렌더링이 잘 안되는데, 이건 BLAS Instance는 결국 하나니까 TLAS에 존재하는 Instance는 하나만 생기게 돼서 그런건가요?맞다면 핸들이 참조하는 pBLAS(D3D 리소스)는 공용으로 사용하고, 게임 오브젝트가 들고있는 BLAS 핸들(CreateBLAS가 반환하는 BLAS_INSTANCE*)을 오브젝트마다 다른걸 들고 있으면 되는걸까요? 계속 바꿔가면서 시도해보는데 잘 안되네요ㅠ
-
해결됨DirectX Raytracing Programming
BuildBLAS 할당 리소스 사이즈
BuildBLAS함수에서 pBlasInstance->pBLAS = m_pResourceBinBLAS->Alloc(info.ScratchDataSizeInBytes);이렇게 하고 있는데 info.ResultDataMaxSizeInBytes 맞지 않나요?감사합니다.
-
해결됨DirectX Raytracing Programming
ConstnatBufferPool관련 질문
안녕하세요. 강의 잘 듣고 있습니다.CConstantBufferManager.cpp -> CONSTANT_BUFFER_PROPERTY에서 enum값의 사이즈인 sizeof(CONSTANT_BUFFER_TYPE_RAY_TRACING)가 아니라 버퍼 구조체의 사이즈인 sizeof(CONSTANT_BUFFER_RAY_TRACING)를 저장해야 하는거 아닌가요?이후에 다른 타입들을 추가할땐 구조체 사이즈를 넣는데, 레이트레이싱은 다른지 궁금해서 여쭤봅니다.
-
미해결D3D12 프로그래밍 - 기초편
CommandList의 GraphicsCommandList 변경이유
코드를 따라가다 보니 기존엔 ID3D12CommandList를 사용하던걸 ID3D12GraphicsCommandList로 바꾸신 부분들이 있으신데 혹시 특별한 이유가 있을까요?
-
해결됨D3D12 프로그래밍 - 기초편
[25:13] Virtual Interface 와 COM Interface간의 차이가 궁금합니다.
안녕하세요. 먼저 좋은 강의 감사드립니다.해당 강의 부분에서 pDebugController 변수를 Virtual Interface라고 말씀하셨는데,COM Interface와 차이가 있는지 궁금합니다!다른 COM 인터페이스 변수들에 대해서 디버깅으로 값을 확인해봐도 pDebugController처럼 IUnknown을 상속받고 가상함수 테이블을 가리키는 포인터가 있으므로 동의어라고 봐도 될까요?
-
미해결D3D12 프로그래밍 - 기초편
Descriptor를 복사하는 이유
안녕하세요 강의 잘 보고 있습니다. 공부를 하다가 의문점이 하나 생겼습니다. Descriptor Heap을 Shader Visible하지 않은 거에 내용을 채우고 렌더링시 Shader Visible한 Descriptor Heap으로 복사하여 사용하는 이유가 어떤 건가요?처음부터 CBV Pool의 Descriptor Heap을 Shader Visible로 사용해도 작동하던데, 혹시 시스템 메모리가 VRAM보다 상대적으로 메모리가 많아서 그런 건가요? 실제 사용할 Descriptor만 VRAM에 올려서 쓰려는 일종의 최적화 기법인가요?
-
미해결D3D12 프로그래밍 - 기초편
코드에 대한질문있습니다.
처음 디바이스 생성부분에서 어댑터를 순환하면서 Device 를 생성하는데저같은경우에는 그래픽카드를 2개 사용중인데 1080과 4090을 사용중인데 첫번째 어댑터에 1080으로 인식되면서 1080을 이용해서 Device 를 생성하는것 같은데 , 이럴경우 문제가되지않나요? 4090 을 이용못하는거아닐까요? } for (DWORD featerLevelIndex = 0; featerLevelIndex < FeatureLevelNum; featerLevelIndex++) { UINT adapterIndex = 0; while (DXGI_ERROR_NOT_FOUND != _factory->EnumAdapters1(adapterIndex, &pAdapter)) { pAdapter->GetDesc1(&AdapterDesc); if (SUCCEEDED(D3D12CreateDevice(pAdapter.Get(), featureLevels[featerLevelIndex], IID_PPV_ARGS(&_device)))) { break; } adapterIndex++; } if (_device) { break; }
-
미해결D3D12 프로그래밍 - 기초편
Comptr 을 안쓸시 메모리 해제순서
혹시 Comptr 을 안쓸시 메모리해제를 직접해주고있는데 ,Device 를 먼저 해제할시 ref값이 0 이 안나와서 DebugLeak 에 걸리게되던데D3D12 객체들의 메모리 해제할때도 순서가 중요한건가요?
-
해결됨D3D12 프로그래밍 - 기초편
raw pointer 쓰시는 이유가 따로 있으신가요?
혹시 ComPtr 안쓰시고 raw pointer 쓰시는 이유가 있으신가요?
-
미해결D3D12 프로그래밍 - 기초편
질문있습니다.
안녕하세요 공부하다가 몇가지 궁금한게 생겨 여쭤봅니다. 질문1) D3D12_DESCRIPTOR_RANGE ranges[2] ={{ D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND }, // b0 ~ b4{ D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND } // t0 ~ t4}; CD3DX12_ROOT_PARAMETER rootParameters[1] = {};rootParameters[0].InitAsDescriptorTable(_countof(ranges), ranges, D3D12_SHADER_VISIBILITY_ALL); 와 같이 루트시그니처에서 테이블의 사용범위를 넓게잡아두고사용할때만 Shader 에서 buffer를 정의 ( ex :cbuffer WVP: register(b0 )해서사용해주고있는데 테이블힙의 메모리 낭비를 제외하면 성능에 큰 악영향이 있을까요?런타임에 터지거나 하는 오류는 현재 없는데 궁금해서 여쭤봅니다. 질문2)제가 이해한게 맞는건지 모르겠습니다. 현재 영천님 의 코드처럼 pool 방식으로 디스크럽터를 넓게만들어두고 할당받는 방식으로 코드를 만들어보고있는데질문1의 방식처럼 rootSignature 를 만들었다고 하였을때 ,SetGraphicsRootDescriptorTable 함수인자에 핸들값을 넣을때그림에 빨간 화살표에 있는 선두에 있는 handle 값만 넣어주면RootSignature 에서는 b0~b5 ,t0~t5 의 총10개를 사용한다고 서명했기떄문에 ,DX에서 읽을때 10개단위로 읽어주기 때문에 10개가 모두 테이블에 바인딩되는 구조인가요?다음 오브젝트를 그릴때는 , 오프셋 10칸을 건너뛴 다음 b0 부터 할당받아서 테이블에 바인딩해주고
-
미해결
directx 12 공부 방법에 대해 여쭤봅니다.
directx12 강의를 듣고 있는데 강의를 듣다보면 모르는 개념도 너무많이 나오고 이게 따라한다고 습득이 되고 이해가 된다고 생각되지 않아서 여쭤봅니다. 현재 강의를 듣고 자료를 받아 코드를 보면서 하고있는데 아직 directx 초기화 부분을 하고 있는데 벌써 부터 막막하고 어떻게 효율적으로 공부를 해야할지 몰라서 여쭤봅니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
혹시 강의에 나온 directx 12 장치관련 코드 구성에 대해서 참고할만한 자료가 있을까요?
강의가 가면갈수록 코드가 점점 방대해져서 관리할 클래스가 많아지는데, 저같은 초보는 클래스가 너무 복잡해서 처음부터 이걸 계획하고 만드는게 상상이 안가는데요. 혹시 "directx 12는 장치 설정하는 부분을 이런식으로 만드는게 정석이다" 할만한 방법론이 있는건가요? 저는 지금 deffered rendering까지 봤는데, 강의에서 그래픽스 이론 부분은 괜찮은데 장치와 관련된 부분은 가면갈수록 클래스 계층이 너무 방대해지고 점점 바뀌면서 이해하기 어려워지더라구요.. 혹시 directx12 장치관련해서 강의와 같이 보면 도움이 될만한 자료같은것이 없을까요? MSDN이 정확하지만, 원래 알고있는 사람만 읽을 수 있는 것 같아서요 ㅠㅠ