Deferred Shading (지연 세이딩)

Slides:



Advertisements
Similar presentations
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
Advertisements

일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
디자인과 컴퓨터그래픽 컴퓨터 산업디자인. 디자인 도구로서의 컴퓨터그래픽스 1. 컴퓨터 그래픽스의 기능 컴퓨터그래픽스는 하드웨어와 소프트웨어로 이루어져 있다. 이 두 가지 가 서로 연결되어 하나의 시스템으로 디자인 결과물을 만든다. 2. 컴퓨터그래픽스 하드웨어 장치 >
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
The Beginning Of Light Skeaker mgun
학습목표 10장. 조명과 음영 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
163535/A25002 컴퓨터 그래픽스 Chap 6. Shading Copyright ⓒ 2001 N Baek.
Mathematics for Computer Graphics
컴퓨터 그래픽스 연구회지 2000년 5월 발표자 : 이영건 날짜 :
Chapter 10. Illumination Models and Surface-Rendering Methods
10장. 조명과 음영 학습목표 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
White OLED 디스플레이 제조공정실습교육
Gamma와 Linear-Color-Space
학습목표 10장. 조명과 음영 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
내 아이를 위한 구강관리.
Real view user guide 제작 : 현대오토콤㈜.
*노동문제 * -비정규직 유효림 박지희 전향숙 황연두.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
경제활동인구조사 1997년 실업률 조사의 설계 표본추출방법 가중치 부여 표준오차 편의
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
치매의 예방 김 은민 윤금 노인요양원 치매의.
Mesh Saliency 김 종 현.
비디오.
OpenGL Programming (II) 3D Graphics Fundamentals
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
3D 캐릭터 애니메이션을 3D Studio MAX로 만들어보자
그래픽스 시스템과 모델.
8장. 가시성 판단 학습목표 후면제거의 정의와 처리방법을 이해한다. 절단작업의 정의와 처리방법을 이해한다.
Chapter 13. Computer Animation
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
Ambient Occlusion 발표자 : 정광일 일 시 :
렌더링.
엽기토끼 죽이기 팀명 : 청순가련.
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
GPU Gems 3 Chapter 13. Volumetric Light Scattering as a Post-Process
Matrix 및 Rendering 파이프라인
DirectX 3D 7개월차 김성도 3D 5인 프로젝트.
학습목표 13장. 고급 렌더링 그림자를 구현하기 위한 세 가지 방법을 이해한다. 레이트레이싱의 정의와 구현방법을 이해한다.
애니메이션을 만드는 대략적 개념 이해하기 Library와 심벌의 개념 이해하기 이규환
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
Draw the basic Geometry Objects
개발시점의 게임시장분석.
알기 쉬운 기초 게임제작개론 발표자 권정훈.
Terrain.
Digital Door Lock Design
빛의 반사 Mount Hood reflected in Mirror Lake, Oregon
2015 한국연구재단 글로벌박사 양성사업 변경사항 안내
게임수학 제 7 장 조명.
CHAPTER 04 파일 설계(FiLE Design).
6. Video Effects.
샘플앱 제작 안내 2016/05/18.
Rendering Lecture 따라하기 제작:이경복(한밭대학교).
Computer Science & Engineering
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
2013 2학기 세미나 카메라 애니메이션.
게임수학 제 9 장 가시성 판단.
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
Ray Casting 발표자 : 박 경 와
CF 분석 전용하.
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
Presentation transcript:

Deferred Shading (지연 세이딩) 박민근(알콜코더) 네이버 초중급 게임 개발자 스터디 [데브루키] 2011.03.26

Real-Time Rendering 최근 게임들은 수 많은 라이트와 수많은 오브젝트 들이 등장한다. -> 라이팅 계산양의 증가

리얼 타임 라이팅을 위한 세가지 주요 기법 포워드 렌더링 (Forward Rendering) 디퍼드 렌더링 Single-pass, Multi-light Multi-pass, Multi-light 디퍼드 렌더링 Deferred Shading

포워드 렌더링

Single-pass, multi-light for each object do for each light do framebuffer= light_model(object,light);

Single-pass, multi-light 화면에 렌더딩 되지 않을 면도 셰이딩 연상을 해야만 한다. 멀티 라이트 상황에서 관리가 어렵다 싱글 템플릿 셰이더에서 수천 가지의 조합의 코드가 생성될 수 있다. 그림자와의 통합이 어렵다

Single-pass, multi-light 1억 개의 오브젝트, 50개의 라이트 [라이팅만을 위한 계산양] 1억 * 50

Multi-pass, multi-light for each light do for each object affected by light do framebuffer+= light_model(object,light);

Multi-pass, multi-light 화면에 렌더딩 되지 않을 면도 셰이딩 연상을 해야만 한다. 높은 배치 카운트 1/object/light 각 패스마다 중복된 작업이 많다. Vertex Transform & setup Anisotropic filtering

Multi-pass, multi-light 1억 개의 오브젝트, 50개의 라이트 [라이팅만을 위한 계산양] 50 * 라이트의 영향을 받는 오브젝트 개수

디퍼트 렌더링

Deferred Shading for each object do G-buffer = lighting properties of object; for each light do framebuffer+= light_model(G-buffer,light);

Deferred Shading 일반적인 그림자 테크닉들과 통합이 쉽다 굉장히 배치가 간단해지고, 엔진에서 관리가 쉽다 일반적인 그림자 테크닉들과 통합이 쉽다 라이팅을 위한 계산이 “완전한” O(1) 복잡도를 가진다. 오브젝트의 개수와 상관없다 수많은 작은 동적 라이팅 사용이 가능하다

Deferred Shading 라이트 개수 * 라이트에 영향받는 픽셀 개수 1억 개의 오브젝트, 50개의 라이트 [라이팅만을 위한 계산양] 라이트 개수 * 라이트에 영향받는 픽셀 개수

Deferred Shading 일종의 포스트 프로세싱처럼 수행된다 오브젝트는 라이팅 계산이 전혀 없이 속성만을 렌더링 한다. 3D 계산을 -> 2D 계산으로 변환 시킨다. 오브젝트는 라이팅 계산이 전혀 없이 속성만을 렌더링 한다. 화면에 실제로 렌더링 되는 픽셀만 라이팅 계산을 수행한다.

Deferred Shading 라이팅 계산을 먼저 하지 않고, 미루어 두었다가 실행하기 때문에 지연(Deferred) 셰이딩 이라고 불리운다.

Deferred Shading 이미 1988년의 시그래프 논문에서 이 기법이 소개 되었다. 그래픽 카드의 발달으로 이젠 실시간에 사용 가능!!

요구 조건 현재의 그래픽 카드로는 당연히!! 전부 지원 가능 MRT(Multi Render Target)을 기본적으로 4장 이상 사용한다 DirectX 9 이상 지포스 6800 이상 ShaderModel 3.0 이상 위 조건이면 사용 가능 현재의 그래픽 카드로는 당연히!! 전부 지원 가능

사용한 게임들

실장된 엔진들 CryEngine 3 기타 등등…

샘플 동영상 Unity 엔진 – Deferred Rendering

샘플 동영상 UDK(언리얼) - Samaritan

디퍼드 렌더링 구현 방법

General Architecture

G-Buffer란? Geometry Buffer Per-pixel 라이팅에 필요한 모든 정보 Normal Position Deffuse / Specular Albedo, Other Attributes

지오메트리 패스 (G버퍼 작성)

지오메트리 패스 3D 공간의 지오메트리(오브젝트) 데이터의 속성값들을G-Buffer에 렌더링 하는 단계 라이팅 처리는 하지 않는다! MRT(Multi Render Target)을 사용해서, 한 패스에 4개의 렌더 타겟에 정보를 렌더링 한다. Depth Normal Diffuse / Specular

지오메트리 패스

2. 라이팅 패스 (픽셸 셰이딩)

라이팅 패스 라이팅을 지오메트리 형태로 렌더링된다. Point Light = Sphere Spot Light = cone Sun = full Screen Quad

라이팅 패스 각각의 라이팅에 대해서 라이팅에 영향을 받는 픽셀을 찾아내서 체크한다. 만약 라이팅이 스크린에 영향을 준다면… Render Shadow Map 라이팅 픽셀을 셰이딩하고 FrameBuffer에 추가한다.

라이팅 패스 각 라이팅에 영향을 받는 픽셀들의 계산 결과를 누적(accumlation) 버퍼에 블렌딩 한다. Diffuse 값과, Specular 값은 별도로 저장한다. For each light: diffuse += diffuse(G-buff.N, L)) specular += G-buff.spec * specular(G-buff.N, G-buff.P, L)

라이팅 패스 최종적으로 원본의 Diffuse 값과 누적 버퍼에 누적된 픽셀 값들을 곱하여 결과를 출력한다. framebuffer = diffuse * G-buff.diffuse + specular

Per-Pixel Lighting float4 PointLightingPS(VS_OUTPUT1 In) : COLOR { half4 diffuseTex = tex2D(MRT0Sampler, In.TexCoord); half4 normalTex = tex2D(MRT1Sampler, In.TexCoord); half z = tex2D(MRT2Sampler, In.TexCoord); //unpack half3 albedo = diffuseTex.xyz; … //reconstruct original view-space position //normalize //diffuse lighting half NdotL = dot(normal, lightVec); half selfShadow = (NdotL > 0) ? 1 : 0; half3 diffuse = albedo * NdotL * selfShadow * LightColor;

Per-Pixel Lighting float4 PointLightingPS(VS_OUTPUT1 In) : COLOR { (앞페이지…) //compute half angle half3 halfAngle = normalize(lightVec + eyeVec); half3 specular = max(pow(dot(halfAngle, normal), SpecularExponent), 0) * selfShadow; … (후략) }

디퍼드 셰이딩 장점

완전한 O(1) 시간에, 수많은 동적 라이팅의 처리가 가능하다. 오브젝트의 개수에 상관없이 상수 시간에 라이팅의 처리가 가능하다.

다수의 라이팅의 렌더링 처리 코드가 간단하며, 관리가 쉽다. 중간 과정에서 만들어진 G-Buffer의 속성들을 다른 기법에 재활용이 가능하다. (포스트 포로세싱 등)

그림자 기법들과 통합이 용이하다. (셀프 셰도우, 소프트 셰도우, SSAO 등)

디퍼드 셰이딩 문제점

MRT(Multi Render Target) 많은 렌더 타겟을 필요로 한다. 하지만 어차피 포스트 프로세싱을 한다면? 필요하니까…

MSAA(Anti Aliasing) 2D 스크린 화면에서의 계산이기 때문에 계단 현상(Aliasing) 해결이 어렵다. 포워드 렌더링에서는 지오메트리 단계에서 얼라이어싱이 되지만, 디퍼드 렌더링에서는 되지 않음 여러가지 개선 방법이 연구 중

Transparency 반투명한 오브젝트의 렌더링이 어렵다. 2D 공간 스크린 정보이기 때문 (뒤 픽셀의 정보를 담을 수 없다) 파티클등의 반투명한 오브젝트는 나중에 포워드 렌더링으로 따로 렌더링 해야만 한다.

같이 사용하면 효율적인 기법

SSAO (Screen Space Amibent Occlusion) Motion Blur Bloom HDR

GI (전역 조명) 전역 셰도우 기법들 기타 포스트 프로세싱 기법들

디퍼드 셰이딩 개선 기법

Light Indexed Deferred Lighting light volume들이 scene과 교차하는 지점에 light index 값을 저장하여 렌더링하는 기법 반투명, MSAA 문제 해결됨 포워드 렌더링과 디퍼드 렌더링의 장단점을 보완 지오메트리를 2 pass 렌더링해야하고, 그림자 제공이 어려움 아직 연구의 여지가 있는 기법

결론

수많은 동적 라이팅을 화면상의 오브젝트의 개수와 관계없이 상수시간에 처리가 가능함 이론상 무한개의 동적 라이팅 사용 가능 어두운 실내나, 어두운 배경에 도억 라이팅이 많은 경우 최적의 해결 방법 (ex. 데드 스페이스2)

현재의 그래픽 카드에서는 당연히 지원됨 별다른 노력 없이, 유명 상용 엔진에서는 기본적으로 지원됨 직접 구현 해도, 개념이 어렵지 않고, 관리가 쉬움 셀프 셰도우등 그림자 기법이 용이함

어차피 다른 포스트 프로세싱(Bloom, HDR등)을 사용하는 게 요즘 게임의 기본 추세라면, 사용하지 않을 이유가 없음 어차피 다른 포스트 프로세싱(Bloom, HDR등)을 사용하는 게 요즘 게임의 기본 추세라면, 사용하지 않을 이유가 없음. (G-Buffer 재사용 가능)

실제 개발된 MMORPG에 적용해서 개발했던 결과, 전체적으로 그래픽 퀄리티가 확실히 상승하였음

물론, MSAA, Transparency 이 제대로 지원되지 않는 문제를 해결해야 하는 부분이 남아 있음

간단한 캐쥬얼 게임이나 모바일 게임이외에 그래픽이 중요한 MMORPG나 FPS 적용하면 상당히 좋은 효과를 얻을 수 있을거라 예상됨

참조 자료 Deferred Shading – 오종빈 (Shader Study) 발표 자료 Deferred Shading – Codevania(김태우) 스프링 노트 Deferred Shading Tutorial - Codevania Deferred Shading –NVIDIA (문서) HDR Deferred Shading – NVIDIA (예제 코드) 니시카와 켄지의 3D게임 팬을 위한 「KILLZONE 2」그래픽스 강좌 Light Indexed Deferred Lighting – Codevania