SlideShare a Scribd company logo
1 of 8
Rain



       최유표, 김정희
목차
•   Motivation
•   DX10을 사용한 NVIDIA의 방식
•   제약 및 개선
•   ?
Motivation
• 텍스쳐 스크롤 방식
 – 비가 카메라를 따라다닌다.
 – 라이트 처리가 힘들다.
• 파티클 방식
 – 사실적인 라이트 처리가 가능하다.
 – 하지만 부하가 많다.
 얼마나 빠르게 많이 그릴 것인가?
DX10을 이용한 NVIDIA 방식
1.   버텍스버퍼에 파티클 위치 초기화
     카메라 주변에만 뿌린다(예제에서는 45M)

2.   파티클 위치갱신 (Draw#1)
     VS : 버텍스버퍼를 input으로 받아서 연산
     GS : 타겟버퍼로 VS의 output을 저장

3.   파티클 Render (Draw#2)
     GS : 2-2의 1점을 4개의 빌보드점으로 생성
     PS : 라이팅 연산 및 파티클 랜더링

4.   물체 Render (Draw#3)
     PS : 메쉬에 물방울이 튕기는 효과 (섭동)
* 섭동
float3 Tan = normalize(In.Tan);
float3 InNormal = normalize(In.Normal);
float wetSurf = saturate(5*saturate(InNormal.y)); // 평평한 부분에서만 섭동되도록

… 생략 …
float4 N = SceneTextureNormal.Sample( samAniso, In.Texture ); // object의 normal

// SplashBumpTexture는 3D Texture
float4 BumpMapVal = SplashBumpTexture.Sample(samAnisoMirror,
                                       float3(In.worldPos.x/2.0 + g_splashXDisplace,
                                       In.worldPos.z/2.0 + g_splashYDisplace,
                                       g_timeCycle))
                                       - 0.5;
N += wetSurf * 2 * (BumpMapVal.x * Tan + BumpMapVal.y * binorm);
N = normalize(N); // 섭동에 따른 Normal 변경

// 섭동에 따른 색 변경
float3 splashDiffuse = wetSurf * SplashDiffuseTexture.Sample(samAnisoMirror,
                                                     float3(In.worldPos.xz, g_timeCycle));
제약 및 개선
• GeometryShader가 없다!!

• 우리의 계획
  – Position Index가 담긴 버텍스버퍼를 가능한 많이
    만들어 놓는다.
  – 텍스쳐(A32R32G32B32)를 랜더타겟으로 위치정
    보를 연산한다.
  – 파티클 렌더링(VS)
    • Index를 가지고 텍스쳐에서 포지션을 가져온다.
    • 위치텍스쳐의 픽셀좌표     = index/4
    • 트라이앵글순서         = index%4

More Related Content

What's hot

게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동세민 이
 
Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02SangYun Yi
 
Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04SangYun Yi
 
1.4.4 입력과 출력
1.4.4 입력과 출력1.4.4 입력과 출력
1.4.4 입력과 출력Park Min Wook
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05Seok-joon Yun
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02Seok-joon Yun
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
[Swift] Higher order function
[Swift] Higher order function[Swift] Higher order function
[Swift] Higher order functionBill Kim
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27진화 손
 

What's hot (16)

게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동
 
Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02
 
Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04
 
[데브루키] FOG
[데브루키] FOG[데브루키] FOG
[데브루키] FOG
 
Gan
GanGan
Gan
 
1.4.4 입력과 출력
1.4.4 입력과 출력1.4.4 입력과 출력
1.4.4 입력과 출력
 
D2 Havok
D2 HavokD2 Havok
D2 Havok
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05
 
Picking
PickingPicking
Picking
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
[Swift] Higher order function
[Swift] Higher order function[Swift] Higher order function
[Swift] Higher order function
 
Week9 quicksort
Week9 quicksortWeek9 quicksort
Week9 quicksort
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27
 

Viewers also liked

D2 Horizon Occlusion
D2 Horizon OcclusionD2 Horizon Occlusion
D2 Horizon OcclusionYoupyo Choi
 
GPU Gems3 Vegetation
GPU Gems3 VegetationGPU Gems3 Vegetation
GPU Gems3 VegetationYoupyo Choi
 
D2 Depth of field
D2 Depth of fieldD2 Depth of field
D2 Depth of fieldYoupyo Choi
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldMilo Yip
 

Viewers also liked (6)

D2 Horizon Occlusion
D2 Horizon OcclusionD2 Horizon Occlusion
D2 Horizon Occlusion
 
GPU Gems3 Vegetation
GPU Gems3 VegetationGPU Gems3 Vegetation
GPU Gems3 Vegetation
 
D2 Job Pool
D2 Job PoolD2 Job Pool
D2 Job Pool
 
D2 Depth of field
D2 Depth of fieldD2 Depth of field
D2 Depth of field
 
D2 Hdr
D2 HdrD2 Hdr
D2 Hdr
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the World
 

Similar to D2 Rain (1/2)

Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objectsyong gyun im
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayYEONG-CHEON YOU
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading종빈 오
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflectionBongseok Cho
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
Reflective Shadow Maps
Reflective Shadow MapsReflective Shadow Maps
Reflective Shadow MapsBongseok Cho
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
NDC11_슈퍼클래스
NDC11_슈퍼클래스NDC11_슈퍼클래스
NDC11_슈퍼클래스noerror
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shadingMinGeun Park
 
Unity performanceoptimzation
Unity performanceoptimzationUnity performanceoptimzation
Unity performanceoptimzationegohim
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseYEONG-CHEON YOU
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Dae Hyek KIM
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2MinGeun Park
 

Similar to D2 Rain (1/2) (20)

Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture Array
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
Reflective Shadow Maps
Reflective Shadow MapsReflective Shadow Maps
Reflective Shadow Maps
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
Volumetric Fog
Volumetric FogVolumetric Fog
Volumetric Fog
 
NDC11_슈퍼클래스
NDC11_슈퍼클래스NDC11_슈퍼클래스
NDC11_슈퍼클래스
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
Unity performanceoptimzation
Unity performanceoptimzationUnity performanceoptimzation
Unity performanceoptimzation
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
Motion blur
Motion blurMotion blur
Motion blur
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2
 
3D Graphics 101
3D Graphics 1013D Graphics 101
3D Graphics 101
 

D2 Rain (1/2)

  • 1. Rain 최유표, 김정희
  • 2. 목차 • Motivation • DX10을 사용한 NVIDIA의 방식 • 제약 및 개선 • ?
  • 3. Motivation • 텍스쳐 스크롤 방식 – 비가 카메라를 따라다닌다. – 라이트 처리가 힘들다. • 파티클 방식 – 사실적인 라이트 처리가 가능하다. – 하지만 부하가 많다. 얼마나 빠르게 많이 그릴 것인가?
  • 4. DX10을 이용한 NVIDIA 방식 1. 버텍스버퍼에 파티클 위치 초기화 카메라 주변에만 뿌린다(예제에서는 45M) 2. 파티클 위치갱신 (Draw#1) VS : 버텍스버퍼를 input으로 받아서 연산 GS : 타겟버퍼로 VS의 output을 저장 3. 파티클 Render (Draw#2) GS : 2-2의 1점을 4개의 빌보드점으로 생성 PS : 라이팅 연산 및 파티클 랜더링 4. 물체 Render (Draw#3) PS : 메쉬에 물방울이 튕기는 효과 (섭동)
  • 5. * 섭동 float3 Tan = normalize(In.Tan); float3 InNormal = normalize(In.Normal); float wetSurf = saturate(5*saturate(InNormal.y)); // 평평한 부분에서만 섭동되도록 … 생략 … float4 N = SceneTextureNormal.Sample( samAniso, In.Texture ); // object의 normal // SplashBumpTexture는 3D Texture float4 BumpMapVal = SplashBumpTexture.Sample(samAnisoMirror, float3(In.worldPos.x/2.0 + g_splashXDisplace, In.worldPos.z/2.0 + g_splashYDisplace, g_timeCycle)) - 0.5; N += wetSurf * 2 * (BumpMapVal.x * Tan + BumpMapVal.y * binorm); N = normalize(N); // 섭동에 따른 Normal 변경 // 섭동에 따른 색 변경 float3 splashDiffuse = wetSurf * SplashDiffuseTexture.Sample(samAnisoMirror, float3(In.worldPos.xz, g_timeCycle));
  • 6.
  • 7.
  • 8. 제약 및 개선 • GeometryShader가 없다!! • 우리의 계획 – Position Index가 담긴 버텍스버퍼를 가능한 많이 만들어 놓는다. – 텍스쳐(A32R32G32B32)를 랜더타겟으로 위치정 보를 연산한다. – 파티클 렌더링(VS) • Index를 가지고 텍스쳐에서 포지션을 가져온다. • 위치텍스쳐의 픽셀좌표 = index/4 • 트라이앵글순서 = index%4