SlideShare a Scribd company logo
1 of 64
게임 개발을 위한 렌더링 기법 민커뮤니케이션 MAD팀 한성환 2010.05.26
목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
Shading Flat Shading Gouraud Shading Phong Shading
Flat Shading
Flat Shading
Gouraud Shading
Phong Shading
목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
Base Rendering(Gouraud Shading) Feature (특징) Diffuse Specular 장단점
Feature(Gouraud Shading) 점단위의Color 계산 두점 사이의 컬러값 선형보간
Diffuse 점의 Normal 방향 Light 방향  내적 Material Diffuse Light Diffuse
Diffuse 문제 Light Diffuse Color ( 255, 255, 0 ) Material Diffuse Color ( 0, 0, 255 ) 무슨 컬러가 나올까요~? LightDiffuse * MaterialDiffuse * 내적(Normal,LightDir) R = 255 * 0 * 내적수치; G = 255 * 0 * 내적수치; B = 0 * 255 * 내적수치; Color( R, G, B ) -> Color( 0, 0, 0 )
Specular 점의 Normal 방향 Light 방향  캐릭터 시점 Half Vector 내적 ( Half, Normal )
Base Rendering 장단점 작업이 쉽다. 모든 그래픽 카드에 지원이 가능하다. 퀄리티가 부족하다. 장점 단점
Base Rendering의 보완책은… Phong Shading Specular는 점단위에 의지 하지 않도록 작업
Pixel Shader 1.4   =  Phong Shading 우리에게 필요한 것은~!! Normalize() Pixel 단위 Normal 수치 선형 보간 Phong Shading은 Pixel Shader 2.0이상 부터 지원
목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Sphere Mapping #1
SphereMapping #2 카메라 시점 Vertex의 Normal TEXTURETRANSFORMFLAGS    - D3DTSS_TCI_CAMERASPACENORMAL     -  Normal (-1~1) ->  UV (-1~1) 텍스쳐 행렬 - D3DTS_TEXTURE0      - UV (-1~1) -> UV (0~1)      x = ( (x) * 0.5 + 0.5 );      y = ( -(y) * 0.5 + 0.5 ); 0.0, 1.0 0.5, 1.5 0.7, 0.7 0.85, 0.15 0.0, 0.5 0.5, 0.75 0.35, 0.35 0.67, 0.67 1.0, 0.0 0.0, 0.0 0.5, 0.0 -1.0, 0.0 0.5, 0.5 0.75, 0.5 1.0, 0.5 0.0, 0.5 0.0, -1.0 0.5, 0.0
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
RimLight #1 ( SphereMapping )
RimLight #2
RimLight원리 ( T&L용 ) 카메라 공간에서의 Normal 수치를 가지고 텍스쳐를 입힘 Sphere Mapping Sphere Texture 를 조작 D3DTSS_COLOROP 는  D3DTOP_ADD 사용
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Cube Mapping #1
Cube Mapping #2 Sphere Mapping과 비교 왜곡 현상이 덜 하다. 여러방향에서Environment mapping을 볼수 있다. (하지만 시각적으로 인지하기 어려움.)
Cube Mapping #3 Sphere Mapping과 비교
Cube Mapping #4 Sphere Mapping과 비교 왜곡 현상이 덜 하다. 여러방향에서Environment mapping을 볼수 있다. Texture Size가 크다. 실시간으로 만드는 것이 비교적 쉽다. (하지만 시각적으로 인지하기 어려움.)
Cube Mapping #5 실시간 생성
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Toon Shading #1 Light 방향 Vertex의 Normal TEXTURETRANSFORMFLAGS  - D3DTSS_TCI_CAMERASPACENORMAL 텍스쳐 행렬    - D3DTS_TEXTURE0
Toon Shading #2
Toon Shading #3 T&L의 Texture방식의 Feature    - Shading 용 텍스쳐로 여러 느낌가능.    - Diffuse Color를 Phong Shading 비슷하게 할 수 있음.    - Phong Shading느낌의Specular는 불가능    - Line이 곡선이 아닌 직선으로 생김
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Edge Rendering #1 종류 One Pixel 짜리 선 생성 메쉬 내부에서 선 생성 메쉬 외부에서 생성되는 외각선 Pixel Shader를 사용하여 Pixel에 기입
Edge Rendering #2 One Pixel 선 생성 메쉬 내부에서 선 생성 (Silhouette Edge Rendering) Sphere Mapping 응용 RimLight와 반대되는 Image를 사용함. WIREFRAME Render Z bias Anti-Aliasing
Edge Rendering #3 Surface Angle Silhouetting
Edge Rendering #4 메쉬 외부에서 선 생성 Normal 방향으로 스케일된Mesh를 Render 미리 계산된 Normal Mesh를 생성 Mesh 생성시 정점을 Merge 시켜줌
Edge Rendering #5 NormalMesh를 그대로 사용할 경우 문제점 같은 위치에 있는 점이지만 Merge 되어 있지 않은 상태 (노멀값이 다른 상태)
Edge Rendering #6 Pixel Shader를 이용 Laplician Filter     - ColorBuffer     - Z Buffer     - Normalmap
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Glow #1 좌우로 늘린 후 상하로 늘린다. GPU부하와 Quality Texture Size Pixel Move Count - 512 - 3칸
Glow #2
Glow #3
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
Fur Rendering #1 구현 방법 예제) 완다와 거상 ALPHA TEST 여러층의Mesh
Fur Rendering #2 단점 면을 평평한 각도로 보면 어색함이 표시 추가 Rendering 필요. 값 비싼 Alpha Test 필요
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
NormalMap #1 Use Shader High Quality Graphic Card의 가격하락과 성능향상    ( Pixel Shader지원 카드 대중화 ) Specular하나만으로도 충분한 효과 발휘
NormalMap #2
Advanced Rendering Environment Mapping    - Sphere Mapping    - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap 메르메르에서 쓰이는 연마효과 T&L Shader
메르메르에서 쓰이는 연마효과 이미지의 조합으로 연마효과를 만듬. Ambient 수치를 변경 Specular수치 변경 특정 Texture를 흐르게 작업. (Flow Texture)
연마효과(Flow Texture 셋팅방법) RenderTarget을 이용하여 Flow Texture 2장을  대칭되게 움직여 랜덤한 이미지 생성 새로 생성한 이미지를 Sphere Mapping과 같은 원리로 작업. 컬러도 customizing 가능하도록 작업.
목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
렌더링 관련 최적화 DIP Calls ( DrawIndexedPrimitive ) VB Change Texture Changes State Changes sets DrawPrimitiveUP Alpha Tex Index Buffer ( < 500DIP ) ( < 500 ) ( < 200 ) ( < 200 )
속도 향상을 위한 텍스쳐 제작 Texture는 가능하다면 1장으로 해결 ( 단점 - 제작시간이 오래 걸림. ) Texture 사이즈를 최대한 작게 제작 DDS 포맷 사용 기술적으로 Texture를 합치는 기능을 만들어 준다. 옵션에 Texture 사이즈 변경 기능 추가 그래픽 팀 프로그램 팀
DDS 구조 (DXT1) (1Pixel)ARGB = 32Bit = 4Byte 1 0 1 3 0 2 1 2 0 0 1 3 (16Pixel) 4Byte * 16 = 64Byte 1 3 1 2 최고 최저 보간 보간 최고와 최저 수치의 Color를 얻어옵니다. (1Pixel)RGB = 16Bit = 2Byte (최고,최저Pixel) 2Byte * 2 = 4Byte 4Byte(Color) + 4Byte(Index) = 8Byte 사용 (16Pixel) 각 Pixel에 Index사용으로 2Bit를 할당합니다. 2Bit는 0, 1, 2, 3으로 4개의 값을 가질수 있습니다. (16Pixel) 2Bit * 16 = 32Bit -> 4Byte
DDS 사용 예 Opaque Texture    - DXT1 Hard Alpha Texture   - DXT1, DXT3 Soft Alpha Texture    - DXT5
이름을 사용한 Alpha 구별 Opaque Texture    - 기존 이름을 사용한다. Hard Alpha Texture    - 이름 뒤에 _a 를 추가로 붙인다. ( DXT5 예외 ) Soft Alpha Texture    - 이름 뒤에 _a, _a1, _a2 를 추가로 붙인다.   - DXT5 일 경우만 적용
왜 SoftAlpha는 a, a1, a2 으로 나눴을까? AlphaTest를 쓰면 OK 하지만….
Alpha Texture의 위험성 남발 할 경우 느리다.
Q & A
감사합니다 궁금하신 부분이 있으시다면!!

More Related Content

What's hot

Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)Sukwoo Lee
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Dae Hyek KIM
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트JP Jung
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art TechnologiesSangYun Yi
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석SangYun Yi
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑Sukwoo Lee
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자MoonLightMS
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑MoonLightMS
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 

What's hot (20)

Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
Motion blur
Motion blurMotion blur
Motion blur
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
Bump Mapping
Bump MappingBump Mapping
Bump Mapping
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art Technologies
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
 
그림자 이야기
그림자 이야기그림자 이야기
그림자 이야기
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
Gametech2015
Gametech2015Gametech2015
Gametech2015
 

Viewers also liked

[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 Sehyeon Nam
 
게임개발사원이되자
게임개발사원이되자게임개발사원이되자
게임개발사원이되자Yggdrasil610
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9진현 조
 
3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교yoonhs306
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
Speed tree 활용법
Speed tree 활용법Speed tree 활용법
Speed tree 활용법Yggdrasil610
 
20120713 ch13
20120713 ch1320120713 ch13
20120713 ch13CARROTCG
 
Some tips for learning how to speak english
Some tips for learning how to speak englishSome tips for learning how to speak english
Some tips for learning how to speak englishananda_lestari
 
Dga 아름다운 캐릭터 만들기
Dga 아름다운 캐릭터 만들기Dga 아름다운 캐릭터 만들기
Dga 아름다운 캐릭터 만들기Yggdrasil610
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613Yong Joon Moon
 
2강 텍스쳐 포맷과 기초 / 오타수정
2강 텍스쳐 포맷과 기초 / 오타수정2강 텍스쳐 포맷과 기초 / 오타수정
2강 텍스쳐 포맷과 기초 / 오타수정JP Jung
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략MinGeun Park
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)SeungIl Choi
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder우진 이
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출abapier
 
GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터Mark Choi
 

Viewers also liked (20)

[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
 
게임개발사원이되자
게임개발사원이되자게임개발사원이되자
게임개발사원이되자
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
 
3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
해킹과 보안
해킹과 보안해킹과 보안
해킹과 보안
 
Speed tree 활용법
Speed tree 활용법Speed tree 활용법
Speed tree 활용법
 
20120713 ch13
20120713 ch1320120713 ch13
20120713 ch13
 
Some tips for learning how to speak english
Some tips for learning how to speak englishSome tips for learning how to speak english
Some tips for learning how to speak english
 
Dga 아름다운 캐릭터 만들기
Dga 아름다운 캐릭터 만들기Dga 아름다운 캐릭터 만들기
Dga 아름다운 캐릭터 만들기
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613
 
2강 텍스쳐 포맷과 기초 / 오타수정
2강 텍스쳐 포맷과 기초 / 오타수정2강 텍스쳐 포맷과 기초 / 오타수정
2강 텍스쳐 포맷과 기초 / 오타수정
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출
 
GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 

Similar to 게임 개발을 위한 렌더링 기법 한성환

247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식NAVER D2
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shadingMinGeun Park
 
[0918 박민수] 범프 매핑
[0918 박민수] 범프 매핑[0918 박민수] 범프 매핑
[0918 박민수] 범프 매핑MoonLightMS
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_webCARROTCG
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius projectWuwon Yu
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splattingdrandom
 
2015.12.10 defferd renderring_
2015.12.10 defferd renderring_2015.12.10 defferd renderring_
2015.12.10 defferd renderring_재현 최
 
Mmorpg맵제작법 성하나(dga)(1)
Mmorpg맵제작법 성하나(dga)(1)Mmorpg맵제작법 성하나(dga)(1)
Mmorpg맵제작법 성하나(dga)(1)창열 최
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근MinGeun Park
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2JP Jung
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdaySangYun Yi
 
Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadowMoonLightMS
 

Similar to 게임 개발을 위한 렌더링 기법 한성환 (20)

Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식
 
Color Control
Color ControlColor Control
Color Control
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
[0918 박민수] 범프 매핑
[0918 박민수] 범프 매핑[0918 박민수] 범프 매핑
[0918 박민수] 범프 매핑
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius project
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splatting
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
2015.12.10 defferd renderring_
2015.12.10 defferd renderring_2015.12.10 defferd renderring_
2015.12.10 defferd renderring_
 
Mmorpg맵제작법 성하나(dga)(1)
Mmorpg맵제작법 성하나(dga)(1)Mmorpg맵제작법 성하나(dga)(1)
Mmorpg맵제작법 성하나(dga)(1)
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stday
 
Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadow
 

게임 개발을 위한 렌더링 기법 한성환

  • 1. 게임 개발을 위한 렌더링 기법 민커뮤니케이션 MAD팀 한성환 2010.05.26
  • 2. 목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
  • 3. Shading Flat Shading Gouraud Shading Phong Shading
  • 8. 목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
  • 9. Base Rendering(Gouraud Shading) Feature (특징) Diffuse Specular 장단점
  • 10. Feature(Gouraud Shading) 점단위의Color 계산 두점 사이의 컬러값 선형보간
  • 11. Diffuse 점의 Normal 방향 Light 방향 내적 Material Diffuse Light Diffuse
  • 12. Diffuse 문제 Light Diffuse Color ( 255, 255, 0 ) Material Diffuse Color ( 0, 0, 255 ) 무슨 컬러가 나올까요~? LightDiffuse * MaterialDiffuse * 내적(Normal,LightDir) R = 255 * 0 * 내적수치; G = 255 * 0 * 내적수치; B = 0 * 255 * 내적수치; Color( R, G, B ) -> Color( 0, 0, 0 )
  • 13. Specular 점의 Normal 방향 Light 방향 캐릭터 시점 Half Vector 내적 ( Half, Normal )
  • 14. Base Rendering 장단점 작업이 쉽다. 모든 그래픽 카드에 지원이 가능하다. 퀄리티가 부족하다. 장점 단점
  • 15. Base Rendering의 보완책은… Phong Shading Specular는 점단위에 의지 하지 않도록 작업
  • 16. Pixel Shader 1.4 = Phong Shading 우리에게 필요한 것은~!! Normalize() Pixel 단위 Normal 수치 선형 보간 Phong Shading은 Pixel Shader 2.0이상 부터 지원
  • 17. 목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
  • 18. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 20. SphereMapping #2 카메라 시점 Vertex의 Normal TEXTURETRANSFORMFLAGS - D3DTSS_TCI_CAMERASPACENORMAL - Normal (-1~1) -> UV (-1~1) 텍스쳐 행렬 - D3DTS_TEXTURE0 - UV (-1~1) -> UV (0~1) x = ( (x) * 0.5 + 0.5 ); y = ( -(y) * 0.5 + 0.5 ); 0.0, 1.0 0.5, 1.5 0.7, 0.7 0.85, 0.15 0.0, 0.5 0.5, 0.75 0.35, 0.35 0.67, 0.67 1.0, 0.0 0.0, 0.0 0.5, 0.0 -1.0, 0.0 0.5, 0.5 0.75, 0.5 1.0, 0.5 0.0, 0.5 0.0, -1.0 0.5, 0.0
  • 21. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 22. RimLight #1 ( SphereMapping )
  • 24. RimLight원리 ( T&L용 ) 카메라 공간에서의 Normal 수치를 가지고 텍스쳐를 입힘 Sphere Mapping Sphere Texture 를 조작 D3DTSS_COLOROP 는 D3DTOP_ADD 사용
  • 25. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 27. Cube Mapping #2 Sphere Mapping과 비교 왜곡 현상이 덜 하다. 여러방향에서Environment mapping을 볼수 있다. (하지만 시각적으로 인지하기 어려움.)
  • 28. Cube Mapping #3 Sphere Mapping과 비교
  • 29. Cube Mapping #4 Sphere Mapping과 비교 왜곡 현상이 덜 하다. 여러방향에서Environment mapping을 볼수 있다. Texture Size가 크다. 실시간으로 만드는 것이 비교적 쉽다. (하지만 시각적으로 인지하기 어려움.)
  • 30. Cube Mapping #5 실시간 생성
  • 31. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 32. Toon Shading #1 Light 방향 Vertex의 Normal TEXTURETRANSFORMFLAGS - D3DTSS_TCI_CAMERASPACENORMAL 텍스쳐 행렬 - D3DTS_TEXTURE0
  • 34. Toon Shading #3 T&L의 Texture방식의 Feature - Shading 용 텍스쳐로 여러 느낌가능. - Diffuse Color를 Phong Shading 비슷하게 할 수 있음. - Phong Shading느낌의Specular는 불가능 - Line이 곡선이 아닌 직선으로 생김
  • 35. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 36. Edge Rendering #1 종류 One Pixel 짜리 선 생성 메쉬 내부에서 선 생성 메쉬 외부에서 생성되는 외각선 Pixel Shader를 사용하여 Pixel에 기입
  • 37. Edge Rendering #2 One Pixel 선 생성 메쉬 내부에서 선 생성 (Silhouette Edge Rendering) Sphere Mapping 응용 RimLight와 반대되는 Image를 사용함. WIREFRAME Render Z bias Anti-Aliasing
  • 38. Edge Rendering #3 Surface Angle Silhouetting
  • 39. Edge Rendering #4 메쉬 외부에서 선 생성 Normal 방향으로 스케일된Mesh를 Render 미리 계산된 Normal Mesh를 생성 Mesh 생성시 정점을 Merge 시켜줌
  • 40. Edge Rendering #5 NormalMesh를 그대로 사용할 경우 문제점 같은 위치에 있는 점이지만 Merge 되어 있지 않은 상태 (노멀값이 다른 상태)
  • 41. Edge Rendering #6 Pixel Shader를 이용 Laplician Filter - ColorBuffer - Z Buffer - Normalmap
  • 42. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 43. Glow #1 좌우로 늘린 후 상하로 늘린다. GPU부하와 Quality Texture Size Pixel Move Count - 512 - 3칸
  • 46. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 47. Fur Rendering #1 구현 방법 예제) 완다와 거상 ALPHA TEST 여러층의Mesh
  • 48. Fur Rendering #2 단점 면을 평평한 각도로 보면 어색함이 표시 추가 Rendering 필요. 값 비싼 Alpha Test 필요
  • 49. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap T&L Shader
  • 50. NormalMap #1 Use Shader High Quality Graphic Card의 가격하락과 성능향상 ( Pixel Shader지원 카드 대중화 ) Specular하나만으로도 충분한 효과 발휘
  • 52. Advanced Rendering Environment Mapping - Sphere Mapping - Cube Mapping Toon Shading Edge Rendering Rim Lighting Glow Fur Rendering T&L에 있는 것 전부 NormalMap 메르메르에서 쓰이는 연마효과 T&L Shader
  • 53. 메르메르에서 쓰이는 연마효과 이미지의 조합으로 연마효과를 만듬. Ambient 수치를 변경 Specular수치 변경 특정 Texture를 흐르게 작업. (Flow Texture)
  • 54. 연마효과(Flow Texture 셋팅방법) RenderTarget을 이용하여 Flow Texture 2장을 대칭되게 움직여 랜덤한 이미지 생성 새로 생성한 이미지를 Sphere Mapping과 같은 원리로 작업. 컬러도 customizing 가능하도록 작업.
  • 55. 목차 Shading Base Rendering Advanced Rendering 렌더링 관련 최적화
  • 56. 렌더링 관련 최적화 DIP Calls ( DrawIndexedPrimitive ) VB Change Texture Changes State Changes sets DrawPrimitiveUP Alpha Tex Index Buffer ( < 500DIP ) ( < 500 ) ( < 200 ) ( < 200 )
  • 57. 속도 향상을 위한 텍스쳐 제작 Texture는 가능하다면 1장으로 해결 ( 단점 - 제작시간이 오래 걸림. ) Texture 사이즈를 최대한 작게 제작 DDS 포맷 사용 기술적으로 Texture를 합치는 기능을 만들어 준다. 옵션에 Texture 사이즈 변경 기능 추가 그래픽 팀 프로그램 팀
  • 58. DDS 구조 (DXT1) (1Pixel)ARGB = 32Bit = 4Byte 1 0 1 3 0 2 1 2 0 0 1 3 (16Pixel) 4Byte * 16 = 64Byte 1 3 1 2 최고 최저 보간 보간 최고와 최저 수치의 Color를 얻어옵니다. (1Pixel)RGB = 16Bit = 2Byte (최고,최저Pixel) 2Byte * 2 = 4Byte 4Byte(Color) + 4Byte(Index) = 8Byte 사용 (16Pixel) 각 Pixel에 Index사용으로 2Bit를 할당합니다. 2Bit는 0, 1, 2, 3으로 4개의 값을 가질수 있습니다. (16Pixel) 2Bit * 16 = 32Bit -> 4Byte
  • 59. DDS 사용 예 Opaque Texture - DXT1 Hard Alpha Texture - DXT1, DXT3 Soft Alpha Texture - DXT5
  • 60. 이름을 사용한 Alpha 구별 Opaque Texture - 기존 이름을 사용한다. Hard Alpha Texture - 이름 뒤에 _a 를 추가로 붙인다. ( DXT5 예외 ) Soft Alpha Texture - 이름 뒤에 _a, _a1, _a2 를 추가로 붙인다. - DXT5 일 경우만 적용
  • 61. 왜 SoftAlpha는 a, a1, a2 으로 나눴을까? AlphaTest를 쓰면 OK 하지만….
  • 62. Alpha Texture의 위험성 남발 할 경우 느리다.
  • 63. Q & A