SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
introduction
    김성익(noerror@hitel.net)
                  2009.4
MotionBlur
• 모션블러란 ?
• 구현이슈
 – 결과를 누적시켜서 적용하는 방법
 – 픽셀별 속도(방향과 크기)를 구해 블러시키는 방법
Image space motion blur
• 포스트 프로세스 처리
• 셰이더사용

• 모션 블러 영역안의 픽셀의 속도를 구해 현재 프레임의
  이미지로 블러처리
Algorithm
• 텍스처에 전체 화면 렌더링 (t1 : scene)
• 각 픽셀별로 속도를 계산 (t2 : velocity mask)
  – 버텍스 셰이더 이동
  – 이전 위치와 현재 위치를 이용
• 두 장의 텍스처(t1, t2)로 모션블러 합성

• 마지막 두 단계는 한 단계로 통합가능
  – t1을 복사한 t1’ 으로 t1에 픽셀별로 바로 합성
Scene Texture
Velocity Texture(1)
• 버텍스 별로 Velocity 계산
• 현재 스크린스페이스와 이전 위치의 스크린 스페이스,
  dt 를 이용 Velocity를 구함
Velocity Texture(2)
• 이전위치 전달
 – 이전 프레임의 매트릭스와 ViewTM을 전달 (일반적인 형태)
    • prevProjCoord = in.coord * prevTM * prevViewTM
    • 세이더 변수의 개수제한으로 스키닝에 한계가 있음 (가능하다면)
        – prevProjCoord = (in.coord * prevTM[in.idx.x] * in.weight.x + in.coord
          * prevTM[in.idx.y] * in.weight.y … ) * prevViewTM
        – 이 경우 Shader3 Model은 텍스처를 이용하면 접근 가능
 – 버텍스 정보에 담아서 (텍스처정보에 이전 위치 벡터를)
    • CPU로 소프트웨어 트랜스폼 및 스키닝을 하는 경우prevProjCoord
      = in.prevCoord * prevViewTM
• 가볍게 카메라의 이동에 대해서만 처리하는 것도 가능
 – prevProjCoord = in.coord * curTM * prevViewTM
Velocity Texture(3)
Velocity Texture(4)-stretch
• 괘적을 표현하기 위해서 메시를 부풀림
• 정교한 괘적은 아니지만 납득할 수준
• 버텍스 노멀과 좌표계상(screenspace X)의 방향으로 버
  텍스의 위치를 현재 프레임과 이전 프레임 중 선택
Velocity Texture(5)
Velocity Texture(6)
Composition (1)
• 속도로 블러 시킬 길이를 구한 다음 n개의 구간으로 나
  눠서 SceneTexture 의 텍스처 샘플링 데이터를 조합
• 퀄리티를 위해선 최대 길이를 제한 할 필요 있음
Composition (2)
• 샘플링을 많이 할수록 자연스러움 (속도는 더 느려짐)
Result
Degeneracy Geometry
• 스트래칭시 메시의 변형이 심해서 원하는 형태가 안나오
  는 경우 대비해서 보이지 않는 안쪽에 면을 만들어둠
Depth-based Velocity
• 씬이 정적이라고 가정하고 카메라에 의한 변화만 있다고
  가정 (원경은 동적이더라도 움직임이 작아 납득할 수준)
• 스크린상 위치와 depth를 이용하면 뷰 좌표를 얻을 수
  있으므로 이전 카메라 viewTM을 이용해서 Velocity 일괄
  계산
Velocity Dilation
• 약간 부풀려서 엣지를 확보
Blend Mask
Iterative Quality Improve
• 합성 패스를 늘려서 적은 샘플링으로 고퀄리티를 얻어냄
Reference
• Stupid OpenGL Shader Tricks - Simon Green
• Implementing Motion Blur & Depth of Field using
  DirectX 8 - Matthias Wloka
• Hardware Accelerated Motion Blur Generation -
  Clement Shimizu, Amit Shesh, Baoquan Chen
• Crysis Next Gen Effects - Tiago Sousa
• Lost Planet 그래픽스강좌
  http://game.watch.impress.co.jp/docs/20070131/3dlp.htm

Contenu connexe

Tendances

[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)Sukwoo Lee
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseYEONG-CHEON YOU
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석SangYun Yi
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전Sukwoo Lee
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술YEONG-CHEON YOU
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdaySangYun Yi
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트JP Jung
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
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
 

Tendances (20)

[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술
 
gv004 ver0.1
gv004 ver0.1gv004 ver0.1
gv004 ver0.1
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stday
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Gametech2015
Gametech2015Gametech2015
Gametech2015
 
Sw occlusion culling
Sw occlusion cullingSw occlusion culling
Sw occlusion culling
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
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
 

Similaire à 09_motionblur

Shaderstudy Motion Blur
Shaderstudy Motion BlurShaderstudy Motion Blur
Shaderstudy Motion Bluryong gyun im
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
09_Voxel rendering
09_Voxel rendering09_Voxel rendering
09_Voxel renderingnoerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...Gyubin Son
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
20120713 ch13
20120713 ch1320120713 ch13
20120713 ch13CARROTCG
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)해강
 
Chapter 12 applications - 1
Chapter 12 applications - 1Chapter 12 applications - 1
Chapter 12 applications - 1KyeongUkJang
 
July report in korean
July report in koreanJuly report in korean
July report in koreannao takatoshi
 
09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개noerror
 
DNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal DataDNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal DataHWANGTAEYONG
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetHyojun Kim
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineHyunwoo Kim
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blogozlael ozlael
 

Similaire à 09_motionblur (20)

Shaderstudy Motion Blur
Shaderstudy Motion BlurShaderstudy Motion Blur
Shaderstudy Motion Blur
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
09_Voxel rendering
09_Voxel rendering09_Voxel rendering
09_Voxel rendering
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
20120713 ch13
20120713 ch1320120713 ch13
20120713 ch13
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
Chapter 12 applications - 1
Chapter 12 applications - 1Chapter 12 applications - 1
Chapter 12 applications - 1
 
20120824
2012082420120824
20120824
 
July report in korean
July report in koreanJuly report in korean
July report in korean
 
09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개
 
DNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal DataDNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal Data
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNet
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with Spine
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
 

Plus de noerror

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrainsnoerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개noerror
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리noerror
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현noerror
 

Plus de noerror (20)

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrains
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현
 

09_motionblur

  • 1. introduction 김성익(noerror@hitel.net) 2009.4
  • 2. MotionBlur • 모션블러란 ? • 구현이슈 – 결과를 누적시켜서 적용하는 방법 – 픽셀별 속도(방향과 크기)를 구해 블러시키는 방법
  • 3. Image space motion blur • 포스트 프로세스 처리 • 셰이더사용 • 모션 블러 영역안의 픽셀의 속도를 구해 현재 프레임의 이미지로 블러처리
  • 4. Algorithm • 텍스처에 전체 화면 렌더링 (t1 : scene) • 각 픽셀별로 속도를 계산 (t2 : velocity mask) – 버텍스 셰이더 이동 – 이전 위치와 현재 위치를 이용 • 두 장의 텍스처(t1, t2)로 모션블러 합성 • 마지막 두 단계는 한 단계로 통합가능 – t1을 복사한 t1’ 으로 t1에 픽셀별로 바로 합성
  • 6. Velocity Texture(1) • 버텍스 별로 Velocity 계산 • 현재 스크린스페이스와 이전 위치의 스크린 스페이스, dt 를 이용 Velocity를 구함
  • 7. Velocity Texture(2) • 이전위치 전달 – 이전 프레임의 매트릭스와 ViewTM을 전달 (일반적인 형태) • prevProjCoord = in.coord * prevTM * prevViewTM • 세이더 변수의 개수제한으로 스키닝에 한계가 있음 (가능하다면) – prevProjCoord = (in.coord * prevTM[in.idx.x] * in.weight.x + in.coord * prevTM[in.idx.y] * in.weight.y … ) * prevViewTM – 이 경우 Shader3 Model은 텍스처를 이용하면 접근 가능 – 버텍스 정보에 담아서 (텍스처정보에 이전 위치 벡터를) • CPU로 소프트웨어 트랜스폼 및 스키닝을 하는 경우prevProjCoord = in.prevCoord * prevViewTM • 가볍게 카메라의 이동에 대해서만 처리하는 것도 가능 – prevProjCoord = in.coord * curTM * prevViewTM
  • 9. Velocity Texture(4)-stretch • 괘적을 표현하기 위해서 메시를 부풀림 • 정교한 괘적은 아니지만 납득할 수준 • 버텍스 노멀과 좌표계상(screenspace X)의 방향으로 버 텍스의 위치를 현재 프레임과 이전 프레임 중 선택
  • 12. Composition (1) • 속도로 블러 시킬 길이를 구한 다음 n개의 구간으로 나 눠서 SceneTexture 의 텍스처 샘플링 데이터를 조합 • 퀄리티를 위해선 최대 길이를 제한 할 필요 있음
  • 13. Composition (2) • 샘플링을 많이 할수록 자연스러움 (속도는 더 느려짐)
  • 15. Degeneracy Geometry • 스트래칭시 메시의 변형이 심해서 원하는 형태가 안나오 는 경우 대비해서 보이지 않는 안쪽에 면을 만들어둠
  • 16. Depth-based Velocity • 씬이 정적이라고 가정하고 카메라에 의한 변화만 있다고 가정 (원경은 동적이더라도 움직임이 작아 납득할 수준) • 스크린상 위치와 depth를 이용하면 뷰 좌표를 얻을 수 있으므로 이전 카메라 viewTM을 이용해서 Velocity 일괄 계산
  • 17. Velocity Dilation • 약간 부풀려서 엣지를 확보
  • 19. Iterative Quality Improve • 합성 패스를 늘려서 적은 샘플링으로 고퀄리티를 얻어냄
  • 20. Reference • Stupid OpenGL Shader Tricks - Simon Green • Implementing Motion Blur & Depth of Field using DirectX 8 - Matthias Wloka • Hardware Accelerated Motion Blur Generation - Clement Shimizu, Amit Shesh, Baoquan Chen • Crysis Next Gen Effects - Tiago Sousa • Lost Planet 그래픽스강좌 http://game.watch.impress.co.jp/docs/20070131/3dlp.htm