Game engine / rendering / graphics programming
Alegruz's blog
Notes on real-time rendering, graphics APIs, game engine architecture, performance, and the math behind computer graphics.
게임 엔진 / 렌더링 / 그래픽스 프로그래밍
Alegruz's blog
실시간 렌더링, 그래픽스 API, 게임 엔진 아키텍처, 성능, 컴퓨터 그래픽스 수학에 대한 노트를 정리합니다.
Posts
글
25 shown 개 표시 59
Topic
주제
Language
언어
2025
-
Implementing ReSTIR Variants in a Direct3D 12 Path Tracer - A Practical Study in Spatio-Temporal Resampling
My informal report on implementing ReSTIR variants in a Direct3D 12 path tracer is here.
-
Study Notes on Math - Proof Writing
Premise 1: All humans are mortal. Premise 2: Socrates is a human. Conclusion: Socrates is mortal.
-
Implementing ReSTIR and ReSTIR-GI on D3D12
My computer graphics journey started in the winter of 2022. I was a junior in university. At first, I wanted to study procedural content generation technique...
-
Study Notes on Performance-Aware Programming
Instruction Decoding on the 8086 Decode let ModuleReady = null; performanceAwareProgramming({ locateFile: (p) = p.endsWith('.wasm') ? '{{ "/assets/codes/perf...
-
Study Notes on Raytracing Implementations
Raytracing is basically computing intersections of parametric lines from the camera with the scene geometry, and then evaluating the lighting at those inters...
-
Study Notes on Monte Carlo Integration
When learning new concepts, I often ask the following questions to keep myself focused:
-
ReSTIR and Collective Intelligence
Lately, I’ve been studying real-time global illumination techniques—particularly ReSTIR and its extensions. As I dug deeper into how the algorithm works, I b...
-
Understanding Radiometry
This is my second note on studying ReSTIR: Understanding Radiometry.
-
Understanding BRDF
This is my first note on studying ReSTIR: Understanding BRDF.
-
ReSTIR Study Notes
ReSTIR was the theme for my graduation project. I wanted to understand the state-of-the-art real-time/interactive global illumination technique, but I have f...
-
Why Vulkan Warns about GalaxyOverlayVkLayer when Creating an Instance with Zero Layer Enabled?
When creating a Vulkan instance with zero enable layers, Vulkan loader warns about GalaxyOverlayVkLayer's name not conforming to naming standard (Policy LLPL...
-
Why Exception Occurs at vkDestroySwapchainKHR?
When destroying the swapchain, an exception occurs. The exception was a read access violation issue.
-
Why vkAcquireNextImageKHR Returns VK_NOT_READY?
I requested three frame buffers, and vkAcquireNextImageKHR returns VKNOTREADY on the last frame buffer at the first cycle, and the returned image index is th...
-
Gaussian Splatting Study Notes
$$ G(x) = e^{-{\frac{1}{2}}\left(x \right)^{T}\sum^{-1}{\left(x\right)}} $$ $$ \Sigma = RSS^{T}R^{T} $$ $$ L = \left(1 - \lambda \right)L{1} + \lambda L{\tex...
-
그래픽스 공부: Fundamentals of Computer Graphics. 04. 레이 트레이싱
컴퓨터 그래픽스의 가장 기초적인 작업은 삼차원 물체를 렌더링rendering하는 것이다. 한 장면에 3D 공간에 존재하는 여러 기하학적 객체들을 특정 시점에서 바라봤을 때 보이는 이미지라는 2D로 계산해내는 것이다. 좀 더 구체적으로 말하자면 여러 객체들을 입력으로 받아 픽셀 배열...
-
수학 공부: How to Prove It. 01. 문장 논리
연역 추론은 증명의 기본. 연역 추론의 대표적인 예시는 삼단 논법. 두 개의 전제와 하나의 결론으로 구성됨. 기본적으로 결론이 만약 거짓이라면 전제 중 하나는 반드시 거짓이어야 함. 예를 들어보자:
-
그래픽스 공부: Fundamentals of Computer Graphics. 03. 래스터 이미지
일반적으로 컴퓨터 그래픽스는 모니터와 같이 각각의 픽셀로 이루어져 있다. 우리가 유튜브로 멋있는 바다 영상을 볼 땐 모니터 위의 한 화소가 각각 특정 색을 띠고 있는 것이다. 실제 바다는 한 픽셀 단위로 색을 가지는 것이 아니고 연속된 색을 띠고 있다. 하지만 이것을 디지털화하여...
-
그래픽스 공부: Fundamentals of Computer Graphics. 01. 서론
컴퓨터 그래픽스computer graphics란 컴퓨터로 이미지image를 만들어내는 모든 용법을 의미한다.
2024
-
Game Engine RHI System Analysis Series 1: Instance
In order to use a Graphics API, once has to initialize something called an Instance. In Direct3D, the Microsoft DirectX Graphics Infrastructure or DXGI is th...
-
Game Engine RHI System Analysis Series 0: Introduction
This is a series of analysis on different game engines with publicly available source codes like Godot, Unreal. The goal of this series is to analyze and sur...
-
Pipeline State Cache Studies
The most efficient way to render using modern GPU is to utilize it's hardware's architecture. Modern GPUs uses the concept of pipelines to maximize performan...
-
Why My Depth Buffer Only Writes 0 or 1?
Check your viewport settings in VkPipelineViewportStateCreateInfo. I bet your min/max depth are both 0.
-
Understanding Command Submission in Modern Graphics
One of the significant shifts in modern graphics APIs is the management of GPU commands. This shift, where developers now manage the entire lifecycle of GPU...
-
컴퓨터 그래픽스에서 좌표계 이해하기
보통 우리는 컴퓨터 그래픽스라는 것을 생각할 땐 너무 복잡하게 생각하려는 경향이 있다. 개인적으로 필자는 그래픽스를 공부를 항상 실제 현실과 비유를 해서 했는데, 그게 좀 더 이해가 쉽고 편하기도 하고, 직관적이기도 하다. 대표적으로 컴퓨터 그래픽스에서 좌표계라는 개념의 경우 실제...
2023
-
Pygame 엔진 개발 일지 02: Assert 대탐험
출처: Game Programmging Gems. 1.12 Squeezing More Out of Assert. Steve Rabin.
-
Pygame 엔진 개발 일지 01
출처: Game Programmging Gems. 1.0 The Magic of Data-Driven Design. Steve Rabin.
-
Pygame 엔진 개발 일지 00 Pygame Engine Development 00
최근에 남는 시간에 그냥 재미로 pygame 기반의 2D 게임 엔진을 개발 중이다. 사실 대학교에 재학 중일 때 젤다의 전설: 신들의 트라이포스를 pygame으로 베껴서 만들었던 적이 있는데, 그때도 비슷한 짓을 했었다. 이번에는 제대로 에디터라든가 요즘 게임 엔진이 제공하는 여러...
-
정점 쉐이더 구간화 Vertex Shader Binning
3D 그래픽스를 디스플레이에 렌더링할 때, 구간bin을 사용하는 시스템이다.
-
익셉셔널 C++
익셉셔널 C++.
-
익셉셔널 C++: 01 제너릭 프로그래밍 및 C++ 표준 라이브러리
게임 개발자로서 성능이 매우 중요하기 때문에 C++ STL에 포함된 애들보다는 C의 snprintf가 제일 나은 선택지 같다.
-
이펙티브 C++
이펙티브 C++.
-
이펙티브 C++: 01 C++에 익숙해지기
이렇듯 어떤 부분에 집중하느냐에 따라 C++을 사용하는 양상이 매우 달라짐.
-
컴퓨터 그래픽스 기초: 02 사소한 수학
그래픽스는 결국 수학을 코드로 옮긴 것이므로 수학이 간결해지면 코드도 간결해진다. 여기서 다루는 주제는 튜토리얼의 느낌보다는 참고 자료로서의 성격이 더 강하다.
-
컴퓨터 그래픽스 기초
게임 개발자의 시선에서 본 Fundamentals of Computer Graphics 5판의 정리 글입니다.
-
컴퓨터 그래픽스 기초: 01 서론
책에서는 컴퓨터 그래픽스란 컴퓨터를 사용하여 어떤 이미지를 생성하고 조작하는 모든 것을 의미한다고 한다. 하지만 필자의 경우 게임 개발자이므로 조금은 좁은 시선으로 이 책을 바라보려고 한다. 필자가 다루려는 부분들은 게임과 유관한 부분이기 때문에 시각화, 컴퓨터 비전, 2D 등은...
-
게임 루프
간단하게 게임을 시작하고 끝낼 때까지의 한 일련의 과정이라고 생각하면 된다.
2022
-
수학 처음부터 끝까지 공부해보기
수학 처음부터 끝까지 공부해보기.
-
광선 추적 전역 조명을 위한 세계 공간 시공간 저장소 재사용
저장소 기반 재표집 방법이 노이즈를 줄여주면서도 픽셀 당 그림자 광선 몇 개 밖에 안 써도 됨. 근데 현재 이미지 공간 기반으로 저장소를 사용하는 방법들은 효율적으로 간접광을 처리하기 위해 위해 더 많이 튕길 때의 경우까지 확장하지 않음.
-
일반 재표집 중요도 표집: ReSTIR의 근간
장면들이 너무 복잡해지니깐 실시간으로 광선 추적 / 경로 표집할 때 적은 표본으로 최고의 퀄리티를 뽑아야하는 기술이 더욱 중요해짐... 최근엔 재표집resampling 기반의 RIS로 최대한 뭔가를 해보려고 했는데, 그 중 하나가 시공간으로 복잡한 광전달을 픽셀 당 겨우 몇 개의...
-
ReSTIR GI: 실시간 경로 추적을 위한 경로 재표집 (revisited)
요즘에 GPU로 광선 추적을 가속화할 수 있긴 하지만, 그래도 실시간으론 겨우 몇 개의 광선 밖에 추적을 못 함. 그렇기 때문에 디노이저가 아무리 좋아도 문제가 발생할 수 밖에 없음. 최근 ReSTIR 알고리듬이 잘 되긴 하는데, 간접광 전용 알고리듬도 필요함.
-
ReSTIR 논문 정리
문제: 수백만 개의 동적인 광원으로부터의 직접광을 몬테 카를로 적분법을 활용하여 효율적으로 렌더링하기 해결: ReSTIR 알고리듬
-
전역 조명을 위한 중요도 재표집
Eurographics 렌더링 심포지엄 (2005) Kavita Bala, Philip Dutré (편집자)
-
몬테 카를로 적분법이란?
몬테 카를로 적분법Monte Carlo integration이란 적분값을 직접 구하기 힘들 때, 무작위로 sample을 추출하여 적분값을 추정하는 방법임.
-
실무에서의 ReSTIR
2020년에 SIGGRAPH에 나온 Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting 논문으로부터 ReSTIR 붐이 시작되었는데, 해당 기술을 적용한 여러 논문을 읽고...
-
Rendering Pipeline Comparison
Pipeline Frame DRAM Read/Write Utilization DRAM Activity L1 Cache L2 Cache Percentage utilization of DRAM reads Percentage utilization of DRAM writes Total D...
-
Efficient Rendering Study Notes
Classic forward rendering: StewartThomas13
-
Rendering Pipeline Study Notes
Simple multi-pass deferred rendering pseudo-code: Ortiz18
-
게임공학 공부 노트
FK: 연속된 관절과, 각 관절에 대한 각도가 주어졌을 때, 관절의 끝지점의 위치를 결정하는 문제.
-
지형에 일관된 식물상과 동물상 저작하기 소스 코드 분석
우선 R 0 을 conditions.py에서 처리하고, 이후 R 1 을 flora.py, R 2 를 fauna.py에서 처리할 듯.
-
ReSTIR GI: 실시간 경로 추적을 위한 경로 재표집
최근에 GPU 많이 발전해서 광선추적법 하드웨어로 가속할 수 있긴 한데, 실시간 어플리케이션에서는 실질적으로 픽셀 당 추적 가능한 광선의 수가 얼마 안 됨. 그렇기에 경로 추적법을 사용할 경우, 현존하는 가장 성능이 좋은 디노이징 알고리듬을 사용하더라도 해결해야할 문제들이 있음....
-
실시간 광선 추적법 공부 노트
이 노트는 Real-Time Rendering 책을 읽고 한국어로 정리한 책입니다.
-
지형에 일관된 식물상과 동물상 저작하기 (논문 번역)
지형에 식물상과 동물상을 서로의 상호작용까지 고려하여 저작하는 새로운 방법을 소개하는 논문. 이 논문에서 소개하는 알고리듬을 통해 각 종별 밀도 맵, 일상 루틴으로 이루어진 안정된 상태의 생태계를 만들어줄 수 있으며, 지형의 침식, 기후적 조건, 생물학적 정보를 갖는 종들로부터 수...
-
전역 조명 공부 노트
이 노트는 Real-Time Rendering 책 등을 읽고 한국어로 정리한 책입니다.
-
광선 추적 기초 공부 노트
이 노트는 NVIDIA에서 제공한 광선 추적법 입문 시리즈인 Ray Tracing Essentials를 한국어로 정리/요약한 노트입니다. 광선 추적법을 공부하시는 분들을 위해 남깁니다.
2021
-
SPH Visualization through Marching Cubes
This function classifies voxels based on number of vertices it will generate. Each thread deals with a single voxel.
-
Smoothed Particle Hydrodynamics by CUDA
In order to understand the SPH method, we must understand how can we simulate liquid. The idea is that liquid is essentially a group of small molecules, also...
-
게임 프로그래밍 입문 공부 노트
앞으로 함수를 호출할 때, 공통적으로 무언가를 추가적으로 실행하고 싶을 때 사용하는 기능.
-
Marching Cube Study Note
There are two types of surfaces to understand beforehand. The Explicit Surface and the Implicit Surface. Explicit surface is a surface that has every vertice...
-
마칭 큐브 공부 노트
우선 명시적 곡면과 암시적 곡면의 차이를 이해해야 한다. 명시적 곡면이란 우리가 OpenGL이나 DirectX에 직접 정점 자료와 색인 자료를 넘겨주듯이 일일이 공간에 이미 정점과 모서리가 주어진 곡면을 의미한다. 암시적 곡면이란 고등학교 기하와 벡터, 혹은 대학교 선형대수나 그래...
No posts match the current filters.