SlideShare a Scribd company logo
1 of 36
띵소프트 노크팀 그래픽스프로그래머
최규일(kulkal@thingsoft.com)
라이트맵 없이 게임 만들기
UE4 에서의 환경변화 구현
목차
1. 배경설명
2. Global Illumination
3. VolumetricFog
4. Ambient Occlusion
5. QnA
UE4 Lightmass
3rd order SH Irradiance Volume
2nd order SH Lightmap
Indirect Diffuse & Shadow Only
Great quality & Low flexibility
UE4 Reflection Environment
Compute Shader Tiled rendering
Prefiltered cubemap for PBR
UE4 의 Look 의 많은 부분에 기여
SSR 과 블렌딩되어 Specular 담당
라이트맵의 단점
굽는데 시간이 오래 걸린다.
정적인 물체에만 적용가능하다
캐릭터는 SH Irradiance Volume 이 필요함
라이트맵의 단점
UV Seam
보조수단(SH Volume, cubemap) 이 필요함
복잡한 지오메트리에 적용이 어려움
스페큘러 안됨
실시간 Global Illumination
Light propagation volume Voxel cone tracing
Enlighten
우리가 원했던 것
배경 제작 프로세스 효율화
라이트맵 UV 안 펼 수 없나.
라이팅 빌드 시간이 아까워.
퀄리티
배경과 캐릭터/수목의 일관된 느낌을 주고 싶다.
시간 날씨 변화
캐릭터를 좀 더 예쁘게 하고 싶다.
라이팅이 다르면 다른 장소같은 느낌
Try #1 : Clipmap SH Irradiance Volume
3D Clipmap 에 SH Irradiance Volume 을 저장해 보면 어떨까?
CPU Octree SH + GPU 3d clip map : 월드가 큰 경우 CPU 부하
GPU Octree SH + GPU 3d clip map : 해볼만하지만 우리 게임에는 불필요
Try #2 : Tiled Diffuse Probe Blending
UE4 reflection capture cubemap 에서 3rd order SH 를 Projection
UE4
Diffuse(추가)
SH Projection
GPU 에서 SH Projection : 실시간 에디팅 가능
UE4 의 SkyLight Diffuse SH Projection 기능을 이용
3rd Order Spherical Harmonics(9 float / channel)
Rendering
Compute Shader tiled culling
Reflection environment 에서 컬링
Interpolation 방식 변경
(PrecomputedLightVolume 방식)
Probe 별 Artist 컨트롤
(Color Tint, Intensity, Lighting Channel)
Lightmass & Probe
Overdraw?
Tiled Rendering 은 컬링 비용보다 픽셀당
Overdraw 비용이 문제
Cluster Rendering 으로 줄일 수 있을 것
Probe Occlusion
Light leak?
Depth cubemap 기반 visibility
현재 :Probe 를 아티스트가 잘 배치(스피어, 박스)
2017 Nvidia GDC 발표
Probe 별로 Depth cubemap 과 VSM으로
Irradiance Probe 의 Occlusion 적용
계획:
Editor Tool
대낮 분위기 레벨
밤 축제 분위기
고요한 달밤 분위기
전환(시간)
전환
동굴밖(PPVolume)
동굴안(PPVolume)
전환( UE4규칙)
축축한 동굴 분위기
ULevel
PostProcessVolume
PostProcessVolume
ULevel
ULevel
여러 개의 라이트레벨
라이팅 전환(GI 포함)
볼륨 간 전환
Voxel based Volumetric Fog
Volumetric Rendering 이란?
단순한 Fog 도 일종의 Volumetric 렌더링
공기중의 입자 하나하나가 빛을 반사하고 영향(반사/감쇄)
Fog Sheet
Alpha Blending 빌보드
라이팅 변화 못함
Dynamic Solution
Geomtery 방식2D Raymarching
Inside Fallout 4
Voxel based Volumetric Fog
Assasin creed 4 에 처음쓰임
Full Dynamic
Screen Aligened Voxel
Compute Shader Scattering
여러 개의 라이트 처리 가능
Shadow on Volumetric fog
In-Scatterred Voxel
불투명 재질은 PostProcess 에서 적용
반투명 재질은 Volume Texture 참조(Screen Aligned)
CSM ESM
ESM Shadow Projection
ESM
Sun Light
Down sample & Blur
In-Scatterred Voxel
In-Scatterred Voxel CS Loop per voxel
2D Compute ShaderIn-Scatterred Voxel Out-Scattered Voxel
Voxel based Volumetric Fog
Solving Scattering equation(시선 ray(pixel 1 개당 CS Thread 1개)
2D compute shader [numthreads(4, 5, 1)
DispatchComputeShader(Width/4, Height/5, 1)
Z 축을 따라서 Loop
Aliasing 줄이기(그림자)
Exponential Shadow Map
태양광에 그림자 적용할 때 Aliasing
줄여줌
Shadow map 을 미리 필터링해서
soft shadow 가능
6144x2048 CSM 768x256 ESM(Gaussian blurred)
Voxel based Volumetric Fog
Ambient Occlusion
SSAO 의 퀄리티를 올릴 필요성 생김
Two-Pass Rendering(HBAO+ Ultra)
벽 근처에 캐릭터가
있을 때의 Halo 제거
배경과 캐릭터의 다른
AO 파라미터 적용
Hbao+ Hbao+ Ultra
Two-Pass Rendering(HBAO+ Ultra)
Two-Pass Rendering(HBAO+ Ultra)
배경 렌더링 stencil bit 1
배경 AO 렌더링
(배경 전용 AO 파라미터)
캐릭터 렌더링 stencil bit 2
BasePass 에서
Two-Pass Rendering(HBAO+ Ultra)
배경 AO 렌더링(invert stencil 2,
Min Blend, 캐릭터 AO 파라미터)
캐릭터 AO 렌더링
(stencil 2 에 대해서, Overwrite,
캐릭터 AO 파라미터)
Q & A
Reference
https://mynameismjp.wordpress.com/2016/10/09/new-blog-series-lightmap-baking-and-spherical-gaussians/
Spherical harmonics 관련 읽을 거리
HBAO+ Ultra 엔비디아 발표자료
Volumetric fog 발표자료
Spherical Gaussian 라이트맵
http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf
http://www.ppsloan.org/publications/StupidSH36.pdf
https://cseweb.ucsd.edu/~ravir/papers/envmap/envmap.pdf
https://bartwronski.files.wordpress.com/2014/08/bwronski_volumetric_fog_siggraph2014.pdf
http://developer.download.nvidia.com/gameworks/events/GDC2016/atatarinov_alpanteleev_advanced_ao.pdf
노크팀에서는 전 분야에 걸쳐 함께 할
개발자를 모집 중입니다.
많은 관심 및 지원 부탁 드립니다.

More Related Content

What's hot

UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1Hong-Gi Joe
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
Choi JiHyun NDC2011
Choi JiHyun  NDC2011Choi JiHyun  NDC2011
Choi JiHyun NDC2011지현 최
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더동석 김
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4Michał Kłoś
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Dae Hyek KIM
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred RenderingKWANGIL KIM
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingYEONG-CHEON YOU
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기Madumpa Park
 

What's hot (20)

Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
Choi JiHyun NDC2011
Choi JiHyun  NDC2011Choi JiHyun  NDC2011
Choi JiHyun NDC2011
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Ssao
SsaoSsao
Ssao
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering
 
Motion blur
Motion blurMotion blur
Motion blur
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion Culling
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
 

Similar to Ue4 에서의 환경변화 구현

Unite2015 probelight(150417)
Unite2015 probelight(150417)Unite2015 probelight(150417)
Unite2015 probelight(150417)SangYun Yi
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdaySangYun Yi
 
Lighting in Stingray
Lighting in StingrayLighting in Stingray
Lighting in StingrayJaehoon Lee
 
NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요  NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요 Wuwon Yu
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesJangho Lee
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)해강
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius projectWuwon Yu
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________Kyoung Seok(경석) Ko(고)
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기종규 우
 
Kgc2013 defense technica_converting_이상윤
Kgc2013 defense technica_converting_이상윤Kgc2013 defense technica_converting_이상윤
Kgc2013 defense technica_converting_이상윤SangYun Yi
 

Similar to Ue4 에서의 환경변화 구현 (14)

Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
 
Unite2015 probelight(150417)
Unite2015 probelight(150417)Unite2015 probelight(150417)
Unite2015 probelight(150417)
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stday
 
Lighting in Stingray
Lighting in StingrayLighting in Stingray
Lighting in Stingray
 
NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요  NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination Techniques
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius project
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________
 
Light
LightLight
Light
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기
 
Kgc2013 defense technica_converting_이상윤
Kgc2013 defense technica_converting_이상윤Kgc2013 defense technica_converting_이상윤
Kgc2013 defense technica_converting_이상윤
 

Ue4 에서의 환경변화 구현

Editor's Notes

  1. 굽는 시간이 오래 걸린다. 렌더팜이나 프리뷰 퀄리티로 이터레이션하는 식으로 해결 동적인 오브젝트는 이레디언스 볼륨등의 보조수단이 필요 라이트맵 해상도를 늘리거나 맵이 넓으면 메모리도 문제(랜드스케잎 같은 경우)
  2. 디퓨즈 이레디언스나 sh 가 블렌딩 되므로 라이트맵 uv 가 연속적이지 않으면 라이팅 seam 이 보이게 되는데, 이거 펴는게 배경 만들 때 상당히 부하 움직이는 게 아니더라도 수풀이나 나뭇잎 (철망) 같은 복잡한 지오메트리는 퀄리티도 안나오고 라이트맵 해상도도 엄청 높여야 해서 쓸 수 없어서 보조수단으로 넘어간다. 스페큘러 표현이 안되서 큐브맵이 어차피 광범위하게 쓰여야 함
  3. LPV 는 Sh Irradiance 볼륨을 실시간으로 만들어 내는 느낌? Voxel Contrace 는 월드의 Direct Lighting 을 Voxelize 한 후에 Contracing (ray 를 적게 사용하는 일종의 실시간 레이트레이스) 인라이튼은 라이트맵을 실시간으로 만들어 냄(Specular 안되고, 애셋 제작측면에서의 라이트맵의 단점을 거의 그대로 가지고 있음)
  4. 가장 큰 동기는 배경 제작 프로세스를 효율화 하고 캐릭터와 배경을 동일한 느낌으로 렌더링하고자 하는 것. UE4 의 precoputed lighting volume으로 캐릭터를 렌더링하는 것이 퀄리티가 떨어지는 것도 원인.2nd order sh, 지금은 3rd order sh) 한 장소에서의 시간 변화 혹은 분위기 전환도 덤으로 하고 싶다.
  5. 간접광을 블렌딩하기 위해서, SH irradiance volume 을 프리 베이크 한후, Gpu clip 맵에 올린 후 블렌딩하는 것을 시도 전체 라이팅 샘플 데이터는 CPU Octree에 두고, 카메라 이동시에 GPU 클립맵을 업데이트 작동은 했지만, GPU Octree 에 전체 라이팅 샘플 데이터가 있는게 아니면 cpu octree 서치가 느려 포기. 나중에 GPU Octree 에 전체 볼륨 데이터를 두고, 렌더링은 클립맵에 두는 방식 만들어 보고 싶음.
  6. 언리얼에는 gpu 에서 pbr specular 를 위한 프리필터 큐브맵을 렌더링하고, diffuse irradiance sh 를 프로젝션하는 코드가 있다. 리플렉션 캡쳐를 움직이거나 업데이트 하면 프리필터 큐브맵을 실시간으로 생성하는 데 이때 diffuse sh 도 생성 ReflectionEnvironment 의 Tiled 렌더링에서 추가로 Diffuse SH 라이팅 추가, 프로브의 오버드로우만 높지 않다면 퍼포먼스 나쁘지 않음
  7. 언리얼에는 gpu 에서 pbr specular 를 위한 프리필터 큐브맵을 렌더링하고, diffuse irradiance sh 를 프로젝션하는 코드가 있다. 리플렉션 캡쳐를 움직이거나 업데이트 하면 프리필터 큐브맵을 실시간으로 생성하는 데 이때 diffuse sh 도 생성 ReflectionEnvironment 의 Tiled 렌더링에서 추가로 Diffuse SH 라이팅 추가, 프로브의 오버드로우만 높지 않다면 퍼포먼스 나쁘지 않음
  8. 프로브의 오버드로우만 높지 않다면 퍼포먼스 나쁘지 않음
  9. 언리얼에는 gpu 에서 pbr specular 를 위한 프리필터 큐브맵을 렌더링하고, diffuse irradiance sh 를 프로젝션하는 코드가 있다. 리플렉션 캡쳐를 움직이거나 업데이트 하면 프리필터 큐브맵을 실시간으로 생성하는 데 이때 diffuse sh 도 생성 ReflectionEnvironment 의 Tiled 렌더링에서 추가로 Diffuse SH 라이팅 추가, 프로브의 오버드로우만 높지 않다면 퍼포먼스 나쁘지 않음
  10. 언리얼에는 gpu 에서 pbr specular 를 위한 프리필터 큐브맵을 렌더링하고, diffuse irradiance sh 를 프로젝션하는 코드가 있다. 리플렉션 캡쳐를 움직이거나 업데이트 하면 프리필터 큐브맵을 실시간으로 생성하는 데 이때 diffuse sh 도 생성 ReflectionEnvironment 의 Tiled 렌더링에서 추가로 Diffuse SH 라이팅 추가, 프로브의 오버드로우만 높지 않다면 퍼포먼스 나쁘지 않음
  11. 시간, 혹은 지역이동에 따라 변화하는 라이팅을 아티스트가 직관적으로 제작하도록 하기 위해서, 하나의 분위기 혹은 시간을 UE4 레벨에 담도록 했음 이 레벨들을 특정 지역을 표현하는 피피 보륨에 연결시켜서, 레벨간 전환이 가능하도록 했음 볼륨을 이동하면 언리얼 피피볼륨 블렌딩 규칙과 동일하게 지역간 라이팅 블렌딩도 함.
  12. 시간, 혹은 지역이동에 따라 변화하는 라이팅을 아티스트가 직관적으로 제작하도록 하기 위해서, 하나의 분위기 혹은 시간을 UE4 레벨에 담도록 했음 이 레벨들을 특정 지역을 표현하는 피피 보륨에 연결시켜서, 레벨간 전환이 가능하도록 했음 볼륨을 이동하면 언리얼 피피볼륨 블렌딩 규칙과 동일하게 지역간 라이팅 블렌딩도 함.
  13. 시간, 혹은 지역이동에 따라 변화하는 라이팅을 아티스트가 직관적으로 제작하도록 하기 위해서, 하나의 분위기 혹은 시간을 UE4 레벨에 담도록 했음 이 레벨들을 특정 지역을 표현하는 피피 보륨에 연결시켜서, 레벨간 전환이 가능하도록 했음 볼륨을 이동하면 언리얼 피피볼륨 블렌딩 규칙과 동일하게 지역간 라이팅 블렌딩도 함.
  14. 스크린 스페이스에서 raymarching 해서 가려짐을 판단, 풀해상도인 경우 성능 낮고 라이트 여러개를 처리하기 어려움 그래서 고려하지 않음
  15. 대기보다는 안개를 처리하는 것이 목적, 간단한 Phase function 사용. 컴퓨트 쉐이더 사용 화면에 정렬된 복셀을 기반으로 한 테크닉이어서, 여러개의 라이트 사용이 가능하고, 포워드 shading 에서도 볼륨 텍스쳐 한번으로 깔끔하게 반투명 처리가 가능.
  16. 먼저 태양광에 대한 그림자 맵을 ESM 으로 변환 한다음에, 크기를 줄이고, 가우시안 블러를 먹인 Exponential shadow map으로 변환한다. ESM 과 태양광 라이트 정보를 이용해 복셀에 입자 하나하나의 In-Scatter 라이팅을 인젝션한다. 복셀별로 루프를 돌려서 포인트라이트/스팟라이트의 In-scatter 라이팅을 인젝션한다. 시선 방향으로 2D compute shader 를 돌려서 (z 방향 픽셀 개수만큼 루프돌림) Out-scatter 계산(각 각의 복셀의 In-scatter 라이팅을 거리에 따른 감쇄를 적용해서 더함)
  17. 복셀의 xy 픽셀 하나당 컴퓨트 쉐이더 쓰레드 1개를 돌림 시선을 따라서 감쇄시키면서 쭉 더하는 것.
  18. 익스포넨셜 쉐도우맵은 d 와 z 의 차이값에 따라 그림자의 농도를 블러시켜주는 VSM 과 비슷한 테크닉, 사용되는 볼륨 텍스쳐의 해상도가 저해상도이기 때문에 생기는 그림자의 알리아싱을 줄여주기 위한 목적으로 사용함.
  19. 밝은 대낮에 캐릭터의 그림자가 없다면 캐릭터의 공간상의 위치를 인지하는데 어려움이 있고, 매우 부자연스럽게 보인다. AO 는 환경광에 대한 그림자라 볼 수 있으므로 , 같은 맥락에서, AO 가 없으면 환경광이 제대로 계산되어 있더라도 부자연스럽게 보인다. 라이트맵이나 여타 다른 베이킹 방식에서는 AO 를 같이 계산해서 구워내지만 그렇게 하지 않고 있으니까, SSAO 같은 실시간 방식에 의존해야 되는데…..
  20. 찾아보니까, 배경과 캐릭터에 다른 AO 를 렌더링하는테크닉이 있었다. 배경은 넓고 진한 AO, 캐릭터는 좀더 세밀하고 조금 연한 AO, 캐릭터가 벽 근처에 서 있을 때의 아티팩트 제거 DFAO 도 좀 테스트 해봤으나, voxe Cone tracing 이 생각보다 느려서 포기함.
  21. 찾아보니까, 배경과 캐릭터에 다른 AO 를 렌더링하는테크닉이 있었다. 배경은 넓고 진한 AO, 캐릭터는 좀더 세밀하고 조금 연한 AO, 캐릭터가 벽 근처에 서 있을 때의 아티팩트 제거 DFAO 도 좀 테스트 해봤으나, voxe Cone tracing 이 생각보다 느려서 포기함.
  22. 기본적인 아이디어는 스텐실을 이용해서 배경과 캐릭터를 분리하는 것. 먼저 배경만 렌더링된 뎁스버퍼와 노말버퍼를 이용해 AO 버퍼에 AO 를 렌더링 그다음에 캐릭터를 다른 스텐실 빗 셋팅하고 뎁스와 노말 버퍼에 렌더링(그래서 베이스페스에서 함) (Hbao+ ultra 사용시에는 캐릭터는 뎁스 프리패스 안함)
  23. 그다음 hbao 라이브러리 내부에서 다 알아서 해줌, 캐릭터 AO 를 overwrite 로 ao 버퍼에 렌더링 배경 AO 를 Min Blend 로 AO 버퍼에 렌더링(캐릭터 발근처 그림자 같은 걸 위해) (엄밀히 말하면 전체가 3 패스이지만 총 픽셀 쉐이더 비용은 2 패스)