전체 글339 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. 2. vtk의 Observer Pattern (1. vtkObserver) [이벤트 발생 주체(vtkObject)] → vtkSubjectHelper → vtkObserver → vtkCommand::Execute() 예측 시나리오1. vtkObject에서 이벤트가 발생한다.2. vtkObject의 멤버인 vtkSubjectHelper로 이벤트 전달3. vtkSubjectHelper와 연결된 Observer에 이벤트 전달4. Observer의 Next Observer에 이벤트 전파5. 각 Observer의 멤버인 Command에서 이벤트 실행 아직 전체 코드를 다 보지는 않았기 때문에 대략 이런 내용이겠구나 생각하고 패스.우선 vtkObserver부터 분석 시작//----------------------------------Command/Observer stuff--.. 2025. 7. 20. 1. vtkTimeStamp vtkTimeStamp는 vtk의 가장 근간이 되는 클래스로, 객체의 변경? 업데이트? 여부를 관리하는 클래스vtk는 수많은 상속구조로 되어 있는데 이 vtkTimeStamp는 아무 것도 상속받지 않은 단독 클래스다. Modified라는 함수 내에서 static으로 atomic 형태의 카운팅 변수를 들고 있고, 객체가 업데이트되면 이 정수값을 증가시킨후 객체의 내부 MTime 변수에 대입한다.이 정수값이 가장 큰 오브젝트가 가장 최근에 업데이트된 객체라는 것을 알아차릴 수 있고, 업데이트 유무도 이 정수값을 통해 확인할 수 있다. ModifiedTime을 통해 내부적으로 변경 여부를 관리한다 (생성자에서 0으로 초기화)New, Delete는 클래스 단위에서 객체의 생성(new)과 소멸(delete)를 함.. 2025. 7. 20. 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. 이전 1 2 3 4 5 6 ··· 85 다음