[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
에픽게임즈에서 제작한 포트나이트(Fortnite)는 액션 빌딩 게임으로, 낮과 밤의 환경이 존재하며 낮에는 나무, 벽돌, 철 등 오브젝트를 부수고 수집한 자원으로 건물 및 함정을 건설하고 밤에는 습격해 오는 몬스터를 물리치는 것이 특징입니다. 이런 역동적인 환경을 만들기 위해서 언리얼 엔진 4에 추가한 다양한 라이트, 섀도, 캐릭터 애니메이션 기능 그리고 100% 리얼타임 게임 트레일러를 제작하는데 사용된 ‘시퀀서’에 대해서도 살펴봅니다.
Talk by Yuriy O’Donnell at GDC 2017.
This talk describes how Frostbite handles rendering architecture challenges that come with having to support a wide variety of games on a single engine. Yuriy describes their new rendering abstraction design, which is based on a graph of all render passes and resources. This approach allows implementation of rendering features in a decoupled and modular way, while still maintaining efficiency.
A graph of all rendering operations for the entire frame is a useful abstraction. The industry can move away from “immediate mode” DX11 style APIs to a higher level system that allows simpler code and efficient GPU utilization. Attendees will learn how it worked out for Frostbite.
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
에픽게임즈에서 제작한 포트나이트(Fortnite)는 액션 빌딩 게임으로, 낮과 밤의 환경이 존재하며 낮에는 나무, 벽돌, 철 등 오브젝트를 부수고 수집한 자원으로 건물 및 함정을 건설하고 밤에는 습격해 오는 몬스터를 물리치는 것이 특징입니다. 이런 역동적인 환경을 만들기 위해서 언리얼 엔진 4에 추가한 다양한 라이트, 섀도, 캐릭터 애니메이션 기능 그리고 100% 리얼타임 게임 트레일러를 제작하는데 사용된 ‘시퀀서’에 대해서도 살펴봅니다.
Talk by Yuriy O’Donnell at GDC 2017.
This talk describes how Frostbite handles rendering architecture challenges that come with having to support a wide variety of games on a single engine. Yuriy describes their new rendering abstraction design, which is based on a graph of all render passes and resources. This approach allows implementation of rendering features in a decoupled and modular way, while still maintaining efficiency.
A graph of all rendering operations for the entire frame is a useful abstraction. The industry can move away from “immediate mode” DX11 style APIs to a higher level system that allows simpler code and efficient GPU utilization. Attendees will learn how it worked out for Frostbite.
Shader programming is typically an esoteric technological area for those that have started off programming game clients using Unity. Since Unity abstracts out the graphics pipeline into an easy to use visual editor, we rarely delve into the inner workings of the programmable GPU
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
We present the technology and ideas behind the unique lighting in MIRRORS EDGE from DICE. Covering how DICE adopted Global illumination into their lighting process and Illuminate Labs current toolbox of state of the art lighting technology.
This talk provides additional details around the hybrid real-time rendering pipeline we developed at SEED for Project PICA PICA.
At Digital Dragons 2018, we presented how leveraging Microsoft's DirectX Raytracing enables intuitive implementations of advanced lighting effects, including soft shadows, reflections, refractions, and global illumination. We also dove into the unique challenges posed by each of those domains, discussed the tradeoffs, and evaluated where raytracing fits in the spectrum of solutions.
his session presents a detailed overview of the new lighting system implemented in DICEs Frostbite 2 engine and how it enables us to stretch the boundaries of lighting in BATTLEFIELD 3 with its highly dynamic, varied and destructible environments.
BATTLEFIELD 3 goes beyond the lighting limitations found in our previous battlefield games, while avoiding costly and static prebaked lighting without compromising quality.
We discuss the technical implementation of the art direction in BATTLEFIELD 3, the workflows we created for it as well as how all the individual lighting components fit together: deferred rendering, HDR, dynamic radiosity and particle lighting.
Custom SRP and graphics workflows - Unite Copenhagen 2019Unity Technologies
Battle Planet - Judgement Day is a unique game in the sense that it's played entirely on a single sphere (the planet). Levels are fully procedural and fully destructible. This structure created a few big challenges in terms of rendering, which were solved by writing a custom Scriptable Render Pipeline for the game. This session provides an overview of the game's rendering features and how they were implemented using SRP. It includes a few examples of how performance issues influenced the design of the pipeline as well as a discussion about shader programming and design patterns.
Speaker:
Henning Steinbock - Threaks
Session available here: https://youtu.be/91zUwJwkXNQ
Talk by Fabien Christin from DICE at GDC 2016.
Designing a big city that players can explore by day and by night while improving on the unique visual from the first Mirror's Edge game isn't an easy task.
In this talk, the tools and technology used to render Mirror's Edge: Catalyst will be discussed. From the physical sky to the reflection tech, the speakers will show how they tamed the new Frostbite 3 PBR engine to deliver realistic images with stylized visuals.
They will talk about the artistic and technical challenges they faced and how they tried to overcome them, from the simple light settings and Enlighten workflow to character shading and color grading.
Takeaway
Attendees will get an insight of technical and artistic techniques used to create a dynamic time of day system with updating radiosity and reflections.
Intended Audience
This session is targeted to game artists, technical artists and graphics programmers who want to know more about Mirror's Edge: Catalyst rendering technology, lighting tools and shading tricks.
Shader programming is typically an esoteric technological area for those that have started off programming game clients using Unity. Since Unity abstracts out the graphics pipeline into an easy to use visual editor, we rarely delve into the inner workings of the programmable GPU
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
We present the technology and ideas behind the unique lighting in MIRRORS EDGE from DICE. Covering how DICE adopted Global illumination into their lighting process and Illuminate Labs current toolbox of state of the art lighting technology.
This talk provides additional details around the hybrid real-time rendering pipeline we developed at SEED for Project PICA PICA.
At Digital Dragons 2018, we presented how leveraging Microsoft's DirectX Raytracing enables intuitive implementations of advanced lighting effects, including soft shadows, reflections, refractions, and global illumination. We also dove into the unique challenges posed by each of those domains, discussed the tradeoffs, and evaluated where raytracing fits in the spectrum of solutions.
his session presents a detailed overview of the new lighting system implemented in DICEs Frostbite 2 engine and how it enables us to stretch the boundaries of lighting in BATTLEFIELD 3 with its highly dynamic, varied and destructible environments.
BATTLEFIELD 3 goes beyond the lighting limitations found in our previous battlefield games, while avoiding costly and static prebaked lighting without compromising quality.
We discuss the technical implementation of the art direction in BATTLEFIELD 3, the workflows we created for it as well as how all the individual lighting components fit together: deferred rendering, HDR, dynamic radiosity and particle lighting.
Custom SRP and graphics workflows - Unite Copenhagen 2019Unity Technologies
Battle Planet - Judgement Day is a unique game in the sense that it's played entirely on a single sphere (the planet). Levels are fully procedural and fully destructible. This structure created a few big challenges in terms of rendering, which were solved by writing a custom Scriptable Render Pipeline for the game. This session provides an overview of the game's rendering features and how they were implemented using SRP. It includes a few examples of how performance issues influenced the design of the pipeline as well as a discussion about shader programming and design patterns.
Speaker:
Henning Steinbock - Threaks
Session available here: https://youtu.be/91zUwJwkXNQ
Talk by Fabien Christin from DICE at GDC 2016.
Designing a big city that players can explore by day and by night while improving on the unique visual from the first Mirror's Edge game isn't an easy task.
In this talk, the tools and technology used to render Mirror's Edge: Catalyst will be discussed. From the physical sky to the reflection tech, the speakers will show how they tamed the new Frostbite 3 PBR engine to deliver realistic images with stylized visuals.
They will talk about the artistic and technical challenges they faced and how they tried to overcome them, from the simple light settings and Enlighten workflow to character shading and color grading.
Takeaway
Attendees will get an insight of technical and artistic techniques used to create a dynamic time of day system with updating radiosity and reflections.
Intended Audience
This session is targeted to game artists, technical artists and graphics programmers who want to know more about Mirror's Edge: Catalyst rendering technology, lighting tools and shading tricks.
6. 기본 아이디어 점점 더 입체적인 그래픽을 제공해야 한다. 이를 위해서는 버텍스 많이 들어간 모델이 필요하지만 메모리 낭비와 부하가 발생한다. 입체는 결국 음영으로 결정된다. 음영만 잘 나타난다면 로우폴리곤 모델도 하이 폴리곤 모델처럼 보일 수 있다.
7. 기본 아이디어 굴곡이 지는 모습을 연출 하고 싶은 모델이 있다. 이 굴곡을 표현할 수 있는 하이 폴리곤 모델을 만든다. 하이 폴리곤의 멋진 음영을 저장한다. 로우폴리곤에 저장된 음영을 적용 시킨다. 로우폴리곤으로 하이 폴리곤의 효과를 누린다.
8. 기본 아이디어 음영 처리는 라이팅이 적용되었다는 의미이다. 라이팅은 법선 벡터( 노말 벡터 )와 광원 벡터를 통해 계산된다. 로우폴리곤 모델에서 하이 폴리곤 모델의 법선 벡터를 적용하려면 버텍스를대칭시키는 것으로는 계산 할 수 없다.
9. 기본 아이디어 음영을 저장한다. 모델의 법선 벡터를 저장한다. 픽셀 단위로 저장해야 한다. 딱 맞는 저장 공간 -> 텍스쳐!( 법선 맵) R , G , B 값에 벡터 X , Y , Z를 저장한다. 계산 할 때는 R , G , B값을 벡터 X , Y , Z로 변환해서 계산한다.
14. 기본 아이디어 주의할 점 앞에서도 말했듯이 픽셀 당 계산일 뿐 버텍스에는 어느 영향도 끼치지 않는다. 즉 버텍스가 많아지거나 위치가 변화하는 것은 아니다. 위에 것이 연장선으로 정상적인 굴곡의 차폐를 기대해서는 안 된다. 안 보여야 될 부분이 보이는 등 문제가 생길 수 있다.
15. 범프매핑 종류 범프맵 종류 Offset Vector Bump Map Height Field Bump Map Normal Map 범프매핑 종류 Emboss Bump Mapping Dot Product Bump Mapping Environment Map Bump Mapping
16. 범프매핑 종류 범프맵 종류 Offset Vector Bump Map Height Field Bump Map Normal Map 범프매핑 종류 Emboss Bump Mapping Dot Product Bump Mapping Environment Map Bump Mapping
17. 범프매핑 구현 – 법선 벡터 저장 텍스쳐에법선의 방향을 저장해야 한다. 쉬운 방법으로는 모델의 기복을 높이맵으로 저장한 뒤 가공하는 것이다. 높이맵은0~255사이값을 이용해 높이만 저장시키는 텍스쳐를 말한다. ( 흰색이 높은 부분 검은색이 낮은 부분을 의미한다. )
19. 범프매핑 구현 – 법선 맵 구하기 높이 맵에서 법선 맵으로 변환하려면 약간의 계산이 필요하다. 기본 원리는 구하고자 하는 UV좌표의 한칸씩 옆에 있는 높이값의 평균을 이용해 두개의 벡터를 만들고 그 벡트들의 외적을 구하는 것이다. D3DXComputeNormalMap() 사용하면 된다.
21. 범프매핑 구현 – 법선 맵 구하기 델타 x , 델타 y는 바로 옆에 것을 사용하려면 1로 잡으면 된다. 나온 높이값에 비율을 적용시키면 그 비율 만큼 더 밝고 어두운 부분이 강해지거나 약해진다. UV중 U를 X축으로 V를 Y축으로 법선을Z축으로 저장하고 있다. 그래서 파랗구나...
23. 범프매핑 구현 – 법선 맵 구하기 위에 방법을 사용하면 탄젠트 공간을 기준으로 법선을 저장하였다라고 말한다. 탄젠트 벡터가 X , 종법선 벡터가 Y , 법선 벡터가 Z 왜 그냥 평범하게 노말값을 계산해서 저장하지 않고 이런 변환을 통해서 탄젠트 공간 기준의 노말값을 저장하는 것일까?
25. 범프매핑 구현 – 법선 맵 구하기 오브젝트 공간 법선 맵 생성 방법 : 그냥 모델에서 뽑으면 된다. 장점 사용하기 쉽다. ( 그냥 계산 하면 된다. ) 단점 움직이는 물체에 적용하기엔 부적절하다.( 연산이 너무 많아진다. )
26. 범프매핑 구현 – 법선 맵 구하기 탄젠트 공간 법선 맵 생성 방법 : 위의 방법대로 뽑으면 된다. 장점 법선을 변환할 필요는 없다. 단점 카메라 , 버텍스등을 탄젠트 공간으로 변환해야 한다.
27. 범프매핑 구현 – 법선 맵 구하기 오브젝트 공간 법선 맵을 사용한다고 가정하면 캐릭터가 애니메이션이라도 하는 날에는 법선들을 애니메이션에 맞게 변환해 주어야 하는데텍스쳐에서 뽑은 값이기도 하고 텍셀마다 처리를 하기 때문에 픽셀 쉐이더가계산량이 너무 많아진다. 탄젠트 공간 법선 맵을 쓰자.
28. 범프매핑 구현 – 법선 맵 구하기 미리 법선 맵을 생성하고 사용하는 것이 더 좋다. NVDIA에서 제공하는 Photoshop 플러그인 Normal Map Plugin등 법선 맵을 만들어 주는 처리가 많다. 요즘 툴들이 좋아서 모델 만들 때 같이 뽑혀 나온다.
29. 범프매핑 구현 – 법선 맵 적용 법선 맵을 적용하는 방법은 적용하고자 하는 물체의 버텍스, 카메라 , 조명등 계산에 필요한 것들을 탄젠트 공간으로 변환하고 계산하면 된다. 탄젠트 공간에 대해 다시 정리하면 T : Tangent Vector B : Binormal Vector N : Normal Vector 이 3개가 기저인 공간이다.
31. 범프매핑 구현 – 법선 맵 적용 로컬 좌표계 에서 탄젠트 공간으로 변환 X -> U , Y -> V로 변환되어야 한다.
32. 범프매핑 구현 – 법선 맵 적용 삼각형의 각 버텍스를P0 , P1 , P2로 생각하자. 그리고 각각 버텍스의UV좌표를( u0 , v0 ) , ( u1 , v1 ) , ( u2 , v2 )로 생각하자. 이 삼각형 안의 한 점을 Q로 보고 UV좌표를( u , v )로 생각하자. 탄젠트 공간으로 변환해주는 행렬은 다음과 같다. 이 행렬을 구해보자.
35. 범프매핑 구현 – 법선 맵 적용 정점들의 T , B 벡터들의 평균을 이용해서 계산하면 직교하지 않을 수 있다. 안전하게 그램 – 슈미트 방법으로 직교하는 기저를 만들어 준다. D3DXComputeTangent() 사용 T′ = T − (N · T)NB′ = B − (N · B)N − (T′ · B)T′/T′2
39. 참고자료 Real Time Rendering2판 DirectX 9 쉐이더 프로그래밍 http://allosha.tistory.com/category/3D%20그래픽스%20매니악스/법선맵(노말맵) http://www.gamasutra.com/view/feature/1515/messing_with_tangent_space.php?page=1 http://www.terathon.com/code/tangent.html http://en.wikipedia.org/wiki/Gram-Schmidt