본 연구는 10만 개 이상의 움직이는 파티클 각각이 발광원으로서 존재할 때 라이팅을 위한 실시간 렌더링알고리즘을 제안한다. 각 라이트의 영향 범위를 동적으로 파악하기 위해 2개의 3D텍스처를 사용하며 첫 번째 텍스처는 라이트 색상 두 번째 텍스처는 라이트 방향 정보를 가진다. 각 프레임마다 두 단계를 거친다. 첫 단계는 Compute shader 기반으로 3D 텍스처 초기화 및 렌더링에 필요한 파티클 정보를 갱신하는 단계이다. 이때 파티클 위치를 3D 텍스처의 샘플링 좌표로 변환 후 이 좌표를 기반으로 첫 번째 3D 텍스처엔 해당 복셀에 대해 영향을 미치는 파티클 라이트들의 색상 총합을, 그리고 두 번째 3D 텍스처에 해당 복셀에서 파티클 라이트들로 향하는 방향벡터들의 총합을 갱신한다. 두 번째 단계는 일반 렌더링 파이프라인을 기반으로 동작한다. 먼저 렌더링 될 폴리곤 위치를 기반으로 첫 번째 단계에서 갱신된 3D 텍스처의 정확한 샘플링 좌표를 계산한다. 샘플링 좌표는 3D 텍스쳐의 크기와 게임 월드의 크기가 1:1로 대응하므로 픽셀의 월드좌표를 그대로 샘플링 좌표로 사용한다. 샘플링한 픽셀의 색상과 라이트의 방향벡터를 기반으로 라이팅 처리를 수행한다. 3D 텍스처가 실제 게임 월드와 1:1로 대응하며 최소 단위를 1m로 가정하는데 1m보다 작은 영역의 경우 해상도 제한에 의한 계단 현상 등의 문제가 발생한다. 이러한 문제를 개선하기 위한 텍스처 샘플링 시 보간 및 슈퍼 샘플링을 수행한다. 한 프레임을 렌더링하는데 소요된 시간을 측정한 결과 파티클이 라이트의 개수가 262144개일 때 Forward Lighting 파이프라인에서 146ms, deferred Lighting 파이프라인에서 46ms 가 소요되었으며, 파티클 라이트의 개수가 1024576개일 때 Forward Lighting 파이프라인에서 214ms, Deferred Lighting 파이프라인에서 104ms 가 소요되었다.
본 연구는 10만 개 이상의 움직이는 파티클 각각이 발광원으로서 존재할 때 라이팅을 위한 실시간 렌더링 알고리즘을 제안한다. 각 라이트의 영향 범위를 동적으로 파악하기 위해 2개의 3D 텍스처를 사용하며 첫 번째 텍스처는 라이트 색상 두 번째 텍스처는 라이트 방향 정보를 가진다. 각 프레임마다 두 단계를 거친다. 첫 단계는 Compute shader 기반으로 3D 텍스처 초기화 및 렌더링에 필요한 파티클 정보를 갱신하는 단계이다. 이때 파티클 위치를 3D 텍스처의 샘플링 좌표로 변환 후 이 좌표를 기반으로 첫 번째 3D 텍스처엔 해당 복셀에 대해 영향을 미치는 파티클 라이트들의 색상 총합을, 그리고 두 번째 3D 텍스처에 해당 복셀에서 파티클 라이트들로 향하는 방향벡터들의 총합을 갱신한다. 두 번째 단계는 일반 렌더링 파이프라인을 기반으로 동작한다. 먼저 렌더링 될 폴리곤 위치를 기반으로 첫 번째 단계에서 갱신된 3D 텍스처의 정확한 샘플링 좌표를 계산한다. 샘플링 좌표는 3D 텍스쳐의 크기와 게임 월드의 크기가 1:1로 대응하므로 픽셀의 월드좌표를 그대로 샘플링 좌표로 사용한다. 샘플링한 픽셀의 색상과 라이트의 방향벡터를 기반으로 라이팅 처리를 수행한다. 3D 텍스처가 실제 게임 월드와 1:1로 대응하며 최소 단위를 1m로 가정하는데 1m보다 작은 영역의 경우 해상도 제한에 의한 계단 현상 등의 문제가 발생한다. 이러한 문제를 개선하기 위한 텍스처 샘플링 시 보간 및 슈퍼 샘플링을 수행한다. 한 프레임을 렌더링하는데 소요된 시간을 측정한 결과 파티클이 라이트의 개수가 262144개일 때 Forward Lighting 파이프라인에서 146ms, deferred Lighting 파이프라인에서 46ms 가 소요되었으며, 파티클 라이트의 개수가 1024576개일 때 Forward Lighting 파이프라인에서 214ms, Deferred Lighting 파이프라인에서 104ms 가 소요되었다.
This study proposes a real-time rendering algorithm for lighting when each of more than 100,000 moving particles exists as a light source. Two 3D textures are used to dynamically determine the range of influence of each light, and the first 3D texture has light color and the second 3D texture has li...
This study proposes a real-time rendering algorithm for lighting when each of more than 100,000 moving particles exists as a light source. Two 3D textures are used to dynamically determine the range of influence of each light, and the first 3D texture has light color and the second 3D texture has light direction information. Each frame goes through two steps. The first step is to update the particle information required for 3D texture initialization and rendering based on the Compute shader. Convert the particle position to the sampling coordinates of the 3D texture, and based on this coordinate, update the colour sum of the particle lights affecting the corresponding voxels for the first 3D texture and the sum of the directional vectors from the corresponding voxels to the particle lights for the second 3D texture. The second stage operates on a general rendering pipeline. Based on the polygon world position to be rendered first, the exact sampling coordinates of the 3D texture updated in the first step are calculated. Since the sample coordinates correspond 1:1 to the size of the 3D texture and the size of the game world, use the world coordinates of the pixel as the sampling coordinates. Lighting process is carried out based on the color of the sampled pixel and the direction vector of the light. The 3D texture corresponds 1:1 to the actual game world and assumes a minimum unit of 1m, but in areas smaller than 1m, problems such as stairs caused by resolution restrictions occur. Interpolation and super sampling are performed during texture sampling to improve these problems. Measurements of the time taken to render a frame showed that 146 ms was spent on the forward lighting pipeline, 46 ms on the defered lighting pipeline when the number of particles was 262144, and 214 ms on the forward lighting pipeline and 104 ms on the deferred lighting pipeline when the number of particle lights was 1,024766.
This study proposes a real-time rendering algorithm for lighting when each of more than 100,000 moving particles exists as a light source. Two 3D textures are used to dynamically determine the range of influence of each light, and the first 3D texture has light color and the second 3D texture has light direction information. Each frame goes through two steps. The first step is to update the particle information required for 3D texture initialization and rendering based on the Compute shader. Convert the particle position to the sampling coordinates of the 3D texture, and based on this coordinate, update the colour sum of the particle lights affecting the corresponding voxels for the first 3D texture and the sum of the directional vectors from the corresponding voxels to the particle lights for the second 3D texture. The second stage operates on a general rendering pipeline. Based on the polygon world position to be rendered first, the exact sampling coordinates of the 3D texture updated in the first step are calculated. Since the sample coordinates correspond 1:1 to the size of the 3D texture and the size of the game world, use the world coordinates of the pixel as the sampling coordinates. Lighting process is carried out based on the color of the sampled pixel and the direction vector of the light. The 3D texture corresponds 1:1 to the actual game world and assumes a minimum unit of 1m, but in areas smaller than 1m, problems such as stairs caused by resolution restrictions occur. Interpolation and super sampling are performed during texture sampling to improve these problems. Measurements of the time taken to render a frame showed that 146 ms was spent on the forward lighting pipeline, 46 ms on the defered lighting pipeline when the number of particles was 262144, and 214 ms on the forward lighting pipeline and 104 ms on the deferred lighting pipeline when the number of particle lights was 1,024766.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 다수의 포인트 라이트를 다루는 다른 관련연구에서 최 적화를 위해 사용한 라이트 컬링 또는 공간 분할을기 반으로 한 라이트 최 적화 기법을 사용하지 않고 게 임 월드에대응하는 3D 텍스처를 만든 후 컴퓨트 셰 이 더에서 3D 라이트텍스처의 각 복셀에 대한 라이트 색상 반영과 라이트 방향벡터를 미리 반영 한 후 라이 팅 단계에서 그리고자 하는 픽셀에대해 영향을 주는 라이트 들을 순회 및 탐색할 필요 없이픽 셀의 월드 좌표를 그대로 3D 텍스처의 샘플링 좌표로 사용한후 라이트의 정보를 읽어와 라이팅 하는 방법을 적용하여성능을 측정 및 분석한 후, 향후 연구에서 관련 연구의 최적화기법을 적용하여 비주얼 개선과 퍼포먼스 향상시키는 것을목표로 한다.
본 논문에서는 실시간 렌더 링 환경에서 10k 개 이상의 파티클각각이 동적 라이트로서 동작할 때 렌더링 과정에서 파티클라이트의 개수와 관계없이 안정적인 프레임 레이트를 유지할수 있는 알고리즘을 제 안한다. 이를 위해 라이 팅 연산에 필요한정보를 가질 수 있는 3D 텍스처를 2 개를 유지한다.
향후 파티클에 대한 절두체 컬링과 라이트 그리드 계층구조를만드는 방식으로 실제로 라이팅 계 산에 필요한 최 소의파티클을구한후 해당 파티클에 대 한라이트관련 연산을월드공간이 아닌 스크린 공간에서 처리하여 상수 시간 알고리즘을구현하는 것을목표로 한다.
제안 방법
Cem Yuksel 은 폭발과 같이 수많은 파티클이 자체적으로 포인트 라이트로서 화면에 존재할 때 포인트 라이트 전체를 연산하지 않고 라이트가 존재하는 공간에 대흥H, 마치 텍스처의밉맵과 같이 여러 단계의 해상도를 가진 라이트 그리드로 이루어진 계층구조를 생성한 후 그리드 당 하나의 포인트 라이트를 가지도록 하여 라이 팅 계산에 반영해야 하는 포인트 라이트의 개수를 줄이고 낮은 해상도 단계의 라이트 그리드의 포인트 라이트의 위치는 높은 해상도 단계의 라이트 그리드의 포인트 라이트의 위치 값을 기반으로 보정하는 방식으로 계산 후 각 단계의 라이 팅 결과를 블랜딩하는 방식을 제시하였다.⑹ Cem Yuksel 은 2019 년에 라이트 그리드 계층 구조 알고리즘을 확장하여 가상의 수많은 포인트 라이트를 생성한 후 이들을 사용한 라이트 그리드 계층 구조를 만들어 전역 조명을렌더 링 하는 방법을 제 시 하였다」기
있었다. [2] [3] 이에 대한 후속 연구로 Clustered Deferred and Forward Shading 기법이 제안되었으며 단순히 화면공간 상에서 격자를 나누는 것이 아니라 3D 이uster Grid 를 이용하여 각각의 3D 클러스터 격자에 대해 교차하는 라이트들의 리스트를 저장하고 투영공간에서 각각 클러스터 영역에 해당하는 픽셀에 대해 리스트에 저장된 라이트에 대해서만 연산을 수행하여 전체 라이팅 연산량을 줄이는 방법을 제안하였다. 2017 년 Yuriy O'Donnell CPU 에서 라이트를 절두체 컬링 한 후 남아있는 라이트들을 라이트의 위치와 카메라 평면 간 의거 리별로 정 렬한후 라이트를 화면 공간에서 타일에 넣은 다음 스크린 스페이스의 타일마다 라이트-트리를 생성한 후, GPU 에서 라이팅 패스를 수행하는 도중 현재 렌더 링하고자하는 픽셀을 덮고 있는 라이트-트리를 식별한 후 해당 라이트-트리에 포함되는 라이트에 대한 조명 연산을 수행하는 방식을 제시하였다.
그 다음 이 단계에서읽어낸 파티클의 위치를 3D 라이트 텍스처의 UV 좌표로써사용한다. 그 다음 파티클의 위 치와의 거리 값이 현재 참조하고있는 파티클의 Particle Light Range Atten 변수의 A 채널 값인 Particle Light Range 변수보다 작은 모든 복셀을 순회하며 3D 라이트 텍스처와 라이트 방향 텍스처의 색상정보를 갱신한다. 파티클의 위치와 라이트 텍스처의 복셀간 거리 DistValue 변수는 GLSL 함수 distance (Particle Position, Voxel Position) 을 사용한다.
그리고동적인 게임 월드를 표현하기 위해 매 프레임마다 y 축을기준으로 무작위 방향과 속도를 가지고 회전하는 Bunny 오브젝트와 Dragon 오브젝트를 각각 50 개 무작위 위치에배치하였다.
이 때문에 렌더 링파이프라인에서 파티클 라이트를 반영하기 위해선 파티클라이트를 제외한 다른 라이트 연산을 끝낸 후 반영해야 한다. 다른 라이트 연산이 끝난 최종 색상에 3D 라이트 색상 텍스처와 3D 라이트 방향 텍스처의 샘플링 색상 값을 이용해 연산한파티클 라이트의 색상을 가산하여 파티클 라이트 반영을수행한다.
가지고 있다. 성능 측정은 포워드 렌더링 패스와디퍼드 렌더링 패스에서 파티클 개수에 따른 한프레임을그리기 위해 소요되는 시간을 측정하였다. Figure 11 은파티클의 개수가 각각 16'384, 655'36, 262444, 1'024'576 개 일때 각각 라이트 패스에 따른 소요 시간을 나타내고 있다.
파티클 라이트의 난반사를 반영하기 위해 3D 라이트 색상 텍스처의 RGBA 채널을 샘플링한 후 다른 라이트 연산이 끝난 색상 결과에 샘플링 결과를 가산한다.
매 3D 텍 스처 의 라이 트정보를 갱 신하는데 사용하는 파티클의 구조는 Figure 2와 같은 구조를 사용한다. 파티클의 라이트가 월드에 영향을 미치는 위치를 나타내기 위한 Particle Position 변수, 파티클이 지닌 라이트의 색상을 표현하기 위한 Particle Light Color 변수, 그리고 파티클의 라이트가 영향을 미치는 범위를 표현하기 위 한 Particle Light Range Atten 변 수를 사용한다.
대상 데이터
본 논문에서는 게임 환경에서의 라이트의 광도 및 색상정보를 저장하기 위해 128*128*128 크기의 3D 텍스처 두 개를 사용한다. 여기서 복셀의 크기는 figure 1의 왼쪽 이 미지와 같이 게임 월드 Im 와 1:1 로 대응하였다.
성능 측정에 있어 기준이 되는 게임 월드는 128m*128m*128m 크기를 상정하였으며 라이트 색상 텍스처 와 라이트 방향텍스처 의 크기 또한 128*128*128 를 사용하였다. 그리고동적인 게임 월드를 표현하기 위해 매 프레임마다 y 축을기준으로 무작위 방향과 속도를 가지고 회전하는 Bunny 오브젝트와 Dragon 오브젝트를 각각 50 개 무작위 위치에배치하였다.
이론/모형
본 논문에서 제안한 파티클 라이팅 시스템이 구동된 환경은 OPENGL 4.3 버 전 그래 픽 API 를 사용하였으며 그래 픽카드는 NVIDIA GTX 980 모델을 사용하였다.
본 논문에서는 Phong 라이팅 모델을 사용하였다. 파티클 라이트의 난반사를 반영하기 위해 3D 라이트 색상 텍스처의 RGBA 채널을 샘플링한 후 다른 라이트 연산이 끝난 색상 결과에 샘플링 결과를 가산한다.
방향벡터 합을 샘플링한다. 샘플링 된 두 가지 정보를기 반으로 Phong 라이 팅 모델에 적용하여 최 종 결과를 얻는다.
그 다음 파티클의 위 치와의 거리 값이 현재 참조하고있는 파티클의 Particle Light Range Atten 변수의 A 채널 값인 Particle Light Range 변수보다 작은 모든 복셀을 순회하며 3D 라이트 텍스처와 라이트 방향 텍스처의 색상정보를 갱신한다. 파티클의 위치와 라이트 텍스처의 복셀간 거리 DistValue 변수는 GLSL 함수 distance (Particle Position, Voxel Position) 을 사용한다.
성능/효과
3D 라이트 텍스처의 경우 게임 월드와 정확하게 1:1 로대응됨과 동시에 해상도가 고정되어 있어 카메라가 월드의 좁은 영역을 가까이서 관측할수록 라이팅 결과에서 사각형 형태의 아티 팩트과 관측됨을 확인할 수 있다.
최근접 보간의 경우 오버 샘플링 적용 여부와관계 없이 사각형의 계단 현상(aliasing)과 아티 팩트가 나타나는것을 확인할 수 있다. 다만 오버샘플링이 적용됨으로써오브젝트의 표면에 반영된 라이트의 색상이 오버샘플링이적용되지 않은 결과보다 더 부드럽게 반영된 것을 확인할 수 있다. Tricubic 보간은 스플라인 곡선을 사용하여 보간하는방법이며 본 논문에서 사용된 Tricubic 보간 에서의 스플라인곡선의 보간은 Catmull-rom 보간법을 사용한다.
Figure 11 은파티클의 개수가 각각 16'384, 655'36, 262444, 1'024'576 개 일때 각각 라이트 패스에 따른 소요 시간을 나타내고 있다. 포워드 렌더링 패스보다 디퍼드 렌더링 패스에서 더 적은시간이 소요되며 동시에 파티클 개수의 증가에 따른 소요시간의 증가폭이 더 적음을 확인할 수 있다.
참고문헌 (13)
F. Lekien and J. Marsden , "Tricubic interpolation in three dimensions", international journal for numerical methodsin engineering, 2005
Ola Olsson, Markus Billeter & Ulf Assarsson., "Clustered Deferred and Forward Shading", HPG 2012, 2012
Ola Olsson , "Tiled and Clustered Forward Shading". , GPU Pro 4, 2013
Ola Olsson and Ulf Assarsson ,"Tiled Shading - Preprint", Chalmers University of Technology, JGT 2011, 2011
Yuriy O'Donnell , "Tiled Light Trees", I3D '17: Proceedings of the 21st ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, 2017
Cem Yuksel, "Lighting grid hierarchy for self-illuminating explosions" , ACM Transactions on Graphics, july 2017
Cem Yuksel "Real-Time Rendering with Lighting Grid Hierarchy", Proceedings of the ACM on Computer Graphics and Interactive Techniques, june 2019,
Wolfgang Engel. "The light pre-pass renderer: Renderer design for efficient support of multiple lights". SIGGRAPH Course: Advances in realtime rendering in 3D graphics and games, 2009.
Scott Kircher and Alan Lawrance. "Inferred lighting: fast dynamic lighting and shadows for opaque and translucent objects. In Sandbox" '09:Proceedings of the 2009 ACM SIGGRAPH Symposium on Video Games, pages 39-45, New York, NY, USA, 2009.
Andrew Lauritzen. "Deferred rendering for current and future rendering pipelines". SIGGRAPH Course: Beyond Programmable Shading, 2010
Matt Swoboda. "Deferred lighting and post processing on playstation 3". Game Developer Conference, 2009.
Abdul Bezrati (Insomniac Games), "REAL-TIME LIGHTING VIA LIGHT LINKED LIST", SIGGRAPH Course : Advances in Real-Time Rendering in Games, 2014
Emil Persson (Avalanche), Ola Olsson (Chalmers University of Technology), "PRACTICAL CLUSTERED DEFERRED AND FORWARD SHADING", SIGGRAPH Course : Advances in Real-Time Rendering in Games, 2013
※ AI-Helper는 부적절한 답변을 할 수 있습니다.