SlideShare a Scribd company logo
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 02
SangYun Yi
ย 
Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04Unity Surface Shader for Artist 04
Unity Surface Shader for Artist 04
SangYun Yi
ย 
[๋ฐ๋ธŒ๋ฃจํ‚ค] FOG
[๋ฐ๋ธŒ๋ฃจํ‚ค] FOG[๋ฐ๋ธŒ๋ฃจํ‚ค] FOG
[๋ฐ๋ธŒ๋ฃจํ‚ค] FOGKyeongWon Koo
ย 
1.4.4 ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ
1.4.4 ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ1.4.4 ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ
1.4.4 ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅPark Min Wook
ย 
D2 Havok
D2 HavokD2 Havok
D2 HavokYoupyo Choi
ย 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05
Seok-joon Yun
ย 
Picking
PickingPicking
Picking
QooJuice
ย 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02
Seok-joon Yun
ย 
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
HyeonSeok Choi
ย 
[Swift] Higher order function
[Swift] Higher order function[Swift] Higher order function
[Swift] Higher order function
Bill Kim
ย 
Week9 quicksort
Week9 quicksortWeek9 quicksort
Week9 quicksort
HansolJang5
ย 
แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„Œแ…ฆแ„ƒแ…ขแ„…แ…ฉแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต Ch04
แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„Œแ…ฆแ„ƒแ…ขแ„…แ…ฉแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต Ch04แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„Œแ…ฆแ„ƒแ…ขแ„…แ…ฉแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต Ch04
แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„Œแ…ฆแ„ƒแ…ขแ„…แ…ฉแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต Ch04
HyeonSeok Choi
ย 
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
แ„†แ…ตแ‡€แ„‡แ…กแ„ƒแ…กแ†จแ„‡แ…ฎแ„แ…ฅแ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„‚แ…ณแ†ซแ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ Ch05
HyeonSeok 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 Job Pool
D2 Job PoolD2 Job Pool
D2 Job PoolYoupyo 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 World
Milo 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 objects
yong 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 Array
YEONG-CHEON YOU
ย 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
Bongseok Cho
ย 
Ndc2010 ์ „ํ˜•๊ทœ ๋งˆ๋น„๋…ธ๊ธฐ2 ์บ๋ฆญํ„ฐ ๋ Œ๋”๋ง ๊ธฐ์ˆ 
Ndc2010 ์ „ํ˜•๊ทœ   ๋งˆ๋น„๋…ธ๊ธฐ2 ์บ๋ฆญํ„ฐ ๋ Œ๋”๋ง ๊ธฐ์ˆ Ndc2010 ์ „ํ˜•๊ทœ   ๋งˆ๋น„๋…ธ๊ธฐ2 ์บ๋ฆญํ„ฐ ๋ Œ๋”๋ง ๊ธฐ์ˆ 
Ndc2010 ์ „ํ˜•๊ทœ ๋งˆ๋น„๋…ธ๊ธฐ2 ์บ๋ฆญํ„ฐ ๋ Œ๋”๋ง ๊ธฐ์ˆ henjeon
ย 
Reflective Shadow Maps
Reflective Shadow MapsReflective Shadow Maps
Reflective Shadow Maps
Bongseok Cho
ย 
์ œ๋…ธ๋ธ”๋ ˆ์ด๋„ 2 ray marching์„์‚ฌ์šฉํ•œ ๊ตฌ๋ฆ„ ํ‘œํ˜„
์ œ๋…ธ๋ธ”๋ ˆ์ด๋„ 2 ray marching์„์‚ฌ์šฉํ•œ ๊ตฌ๋ฆ„ ํ‘œํ˜„์ œ๋…ธ๋ธ”๋ ˆ์ด๋„ 2 ray marching์„์‚ฌ์šฉํ•œ ๊ตฌ๋ฆ„ ํ‘œํ˜„
์ œ๋…ธ๋ธ”๋ ˆ์ด๋„ 2 ray marching์„์‚ฌ์šฉํ•œ ๊ตฌ๋ฆ„ ํ‘œํ˜„
๋ฏผ์›… ์ด
ย 
Volumetric Fog
Volumetric FogVolumetric Fog
Volumetric Fog
Bongseok Cho
ย 
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 performanceoptimzation
egohim
ย 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
YEONG-CHEON YOU
ย 
[IGC2018] ์œ ์˜์ฒœ ๊ฐœ๋ฐœ์ž - Voxel๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ๊ฒŒ์ž„ ์ตœ์ ํ™”๊ธฐ๋ฒ•
[IGC2018] ์œ ์˜์ฒœ ๊ฐœ๋ฐœ์ž - Voxel๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ๊ฒŒ์ž„ ์ตœ์ ํ™”๊ธฐ๋ฒ•[IGC2018] ์œ ์˜์ฒœ ๊ฐœ๋ฐœ์ž - Voxel๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ๊ฒŒ์ž„ ์ตœ์ ํ™”๊ธฐ๋ฒ•
[IGC2018] ์œ ์˜์ฒœ ๊ฐœ๋ฐœ์ž - Voxel๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ๊ฒŒ์ž„ ์ตœ์ ํ™”๊ธฐ๋ฒ•
๊ฐ• ๋ฏผ์šฐ
ย 
Motion blur
Motion blurMotion blur
Motion blur
changehee lee
ย 
๊น€ํ˜, <๋“œ๋ž˜๊ณค ํ•˜์šด๋“œ>์˜ PBR๊ณผ ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•, NDC2019
๊น€ํ˜, <๋“œ๋ž˜๊ณค ํ•˜์šด๋“œ>์˜ PBR๊ณผ ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•, NDC2019๊น€ํ˜, <๋“œ๋ž˜๊ณค ํ•˜์šด๋“œ>์˜ PBR๊ณผ ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•, NDC2019
๊น€ํ˜, <๋“œ๋ž˜๊ณค ํ•˜์šด๋“œ>์˜ PBR๊ณผ ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•, NDC2019
devCAT 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
ย 
3D Graphics 101
3D Graphics 1013D Graphics 101
3D Graphics 101
Leonardo YongUk Kim
ย 

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