본문 바로가기

Graphics

(3)
[Optimization][Assembly] GPU Instruction 최적화 - 상수 값 사이의 연산 줄이기 셰이더 내부에서 처리하던 상수 값 사이의 연산을 CPU 에서 처리하게 하면, GPU Instruction 이 줄어들어 셰이더의 GPU 실행 속도가 빨라질 수 있다. 코드 예시: float GetDepthSlice (float SceneDepth) { float MinDepth = ViewUniformBuffer.DepthStartDistance; float MaxDepth = ViewUniformBuffer.DepthScale * 1000.0f; float DepthSlice = (SceneDepth - MinDepth) / (MaxDepth - MinDepth); return saturate(DepthSlice); } 위 함수에서, SceneDepth 를 제외한 나머지 값들은 모두 UniformBuff..
[Renderer] Graphics Pipeline (Rendering Pipeline) / RenderPass / Rendering Path 렌더 패스(RenderPass)란 하나의 그래픽스 파이프라인을 실행하는 것이다. 렌더 패스는 렌더링 엔진 (e.g. 게임 엔진) 의 구조에 따라 다양한 종류가 있다. 그래픽스 파이프라인(Graphics pipeline)이란 3D scene 을 2D screen 으로 렌더링하기 위해서 CPU/GPU 가 수행하는 단계들이다. 렌더링 파이프라인(Rendering pipeline) 이라고도 한다. 그래픽스 파이프라인은 그래픽스 API (e.g. DirectX, OpenGL, Vulkan, Metal .. ) 에 따라 조금씩 다르지만, 구조는 비슷하다. Graphics Pipeline (Rendering Pipeline) 크게 3단계로 나눌 수 있다: 1. Application CPU는 이번 프레임에 렌더링 할 ..
[Vector] 두 벡터 사이의 각도 구하기 (내적/외적) 내적으로 두 벡터의 사이각 구하기 (0 ~ 180도) 수학에서 두 벡터 사이의 각도 (사이각) 은 0 ~ 180도 사이의 값으로 정의된다. 두 벡터 $\vec{\alpha}$ , $\vec{\beta}$ 의 사이각을 $\theta$ 라 할 때, 사이각 $\theta$ ($0\leq\theta