본문 바로가기

DirectX58

1. Vulkan이란? Vulkan을 배우는 이유더보기OpenGL은 렌더링 컨텍스트가 단일 스레드에 종속되어 있어, 멀티스레드 환경에서는 병렬 처리가 어렵고 성능이 불안정(DirectX11도 마찬가지)이를 개선하기 위해 Vulkan은 DirectX 12와 유사한 커맨드 큐기반 구조를 도입하여, 멀티스레드에서도 효율적인 렌더링이 가능하도록 설계됨또한 Vulkan은 Windows, Linux, Android 등 다양한 플랫폼을 공식 지원하며, macOS/iOS에서도 MoltenVK 레이어를 통해 동작할 수 있다.위 벤치마크(2024년)에서는 낮은 그래픽 환경에서 Dx11, Dx12보다 Vulkan이 압도적인 우위를 점하고 있다고 한다.(steam 옵션에서 vulkan으로 실행할 수 있는 옵션이 있는 것으로 보임, -forcesta.. 2025. 10. 9.
3. 연조직과 뼈 구분하여 Volume Rendering 연조직과 뼈를 구분하기 위해 첫번째로 LUT Texture를 만들었습니다.LUT Texture는 Texture1D 형태로 구현되며 초기값으로 Look-up table이 들어가게 됩니다.Look-up table을 SRV로 만들어 볼륨이 렌더링될 때 픽셀 셰이더로 넘기면, 픽셀 셰이더에서 볼륨을 렌더링할 때 밀도값을 이용하여 Look-up table을 샘플링하고, 그 값은 최종 색상에 반영됩니다. - On / Off 기능 구현을 위해 상수버퍼의 구성을 조금 수정하였습니다.- 16바이트 패딩에 의해 기존에 float fDummy[2]가 있었던 자리에, int형식의 플래그 2개를 만들었습니다.- Raycast Shader는 이 버퍼를 들고 있다가, 사용자가 G키나 H키를 누르면 이 값을 업데이트하고 다시 GPU.. 2025. 2. 25.
2. Input 및 Camera 구현 1. 키보드 및 마우스 입력 구현형식 자체는 기존에 게임 개발 시 직접 만들었던 프레임워크를 참고하되, 현재 렌더러 프로젝트에 맞게 변형하여 사용하였습니다.- 입력값을 어디서든 사용할 수 있도록 싱글톤 패턴으로 구현하였습니다.- 키보드 및 마우스 입력을 구현함으로써 입력에 대한 처리를 수행할 수 있게 되었고, 다음에 구현할 카메라 클래스가 해당 기능을 사용하게 됩니다. 2. 카메라 클래스 구현- 카메라에서는 뷰행렬 및 투영행렬을 만드는 역할을 합니다.- 따라서 멤버변수로 변환행렬을 만들기 위한 변수들을 들고 있습니다.- 굳이 클래스로 뺀 이유는 카메라의 월드행렬을 만들고 용이하게 관리하기 위함입니다.- 카메라를 객체로 둔다면 카메라의 월드행렬의 역행렬을 통해 간단히 뷰행렬을 구할 수 있는 이점도 있을 뿐.. 2025. 2. 23.
1. Volume Rendering 1. Volume Rendering이란?- 3D 공간에서 정의된 Volume Data를 시각적으로 표현하는 렌더링 기법- 게임 프로그래밍에서 쓰이는 표면 기반 렌더링과는 다르게, 3D 공간 상 밀도 값을 가지는 볼륨 데이터를 직접 렌더링- 일반적으로 Voxel 형태로 표현되며, Voxel Data는 밀도, 색상 등의 속성 값을 가집니다. 2. 구현 방법- DirectX11 기반으로 구현 (OpenGL 등 다른 그래픽스 라이브러리로도 구현 가능합니다)2-1. Front Texture 생성2-2. Back Texture 생성2-3. 최초 Render Pass에서 Front Texture를 Render Target으로 설정한 후, Front Face Culling의 RasterizerState를 설정2-4. .. 2025. 2. 18.