SlideShare a Scribd company logo
1 of 34
Download to read offline
Shadow Map Silhouette
Revectorization (SMSR)
- Vladimir Bondarev

Shader Study
해강
제 영어실력상 잘못된 오역이 있을 수 있습니다
제 기술실력상 잘못된 이해가 있을 수 있습니다
뭔가 좀 이상하다 싶으면
원문을 보세요
http://bondarev.nl
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
기본적으로 shadow map은
1. 호환성이 좋고,
2. 구현 난이도가 낮으며,
3. 여러 종류의 지형 처리에 용이
하다고 알려져 있다
그러나 일반적으로 앨리어싱 문제가 존재
완전히 앨리어싱을 제거하기 위한 기술은
(LogPSM, Irregular Z-Buffer Technique)
현 아키택처상 실시간에서는 불가능

Johnson, G. S., Mark, W. R., Burns, C. A., & Lee, J.
(2005). The Irregular Z-Buffer and its Application to

Shadow Mapping. ACM Transactions on Graphics,
24(4), 1462-1482. Retrieved from

ftp://ftp.cs.utexas.edu/pub/techreports/tr04-09.pdf

Lloyd, B., Govindaraju, N., & Quammen, C. (2007).

Logarithmic Shadow Maps. Retrieved November 27,
2013, from http://gamma.cs.unc.edu/LOGPSM/
Stamminger, M., & Drettakis, G. (2002). Perspective

Dimitrov, R. (2007). Cascaded Shadow Maps.
Retrieved 27, 2013, from
http://developer.download.nvidia.com/SDK/10/openg
l/screenshots/samples/cascaded_shadow_maps.html

shadow maps. ACM Transactions on Graphics, 21(3),
557-562. Retrieved from
http://www.cs.berkeley.edu/~ravir/6160fall04/papers/p557-stamminger.pdf

Martin, T., & Tan, T. (2004). Anti-aliasing and

1. 샘플 재분배 최적화
(PSM, TSM, LiSPSM, CSM)

Light Space Perspective Shadow Maps, Institut fur

Continuity with Trapezoidal Shadow Maps. Retrieved
December 27, 2013, from
http://www.comp.nus.edu.sg/~tants/tsm.html

2. 필터링 기술
(VSM, PCF, BFSM)
Reeves, W. T., Salesin, D. H., & Cook, R. L. (1987).
Donnelly, W., & Lauritzen, A. (2006). Variance

Shadow Maps. Retrieved December 27, 2013, from
http://www.punkuser.net/vsm/

Wimmer, M., Scherzer, D., & Purgathofer, W. (2004).

Rendering antialiased shadows with depth maps.
ACM SIGGRAPH Computer Graphics, 24(4), 283-

291. Retrieved from
http://maverick.inria.fr/Members/Cyril.Soler/DEA/O
mbres/Papers/Reeves.Sig87.pdf

따라서 현재 실시간 기술은
위 두가지에 초점을 두고 있다

Computergraphik und Algorithmen –
Arbeitsgruppefur Computergraphik. Retrieved 27,
2013, from
http://www.cg.tuwien.ac.at/research/vr/lispsm/

Kim, J., & Kim, S. (2009). Bilateral Filtered Shadow

Maps. ISVC ’09 Proceedings of the 5th International
Symposium on Advances in Visual Computing: Part
II, 49-58.
SMSR은 MLAA 구현을 기반으로
GPU에서 그림자를 다시 근사 필터링 하는 기술
대부분의 undersampling 영역에서 속도 향상의 이점은 있지만,
그림자의 퀄리티가 떨어지게 된다
SMSR은 언더샘플링 영역에서 그림자 영역의 근사치를 구해서
shadowmap의 퀄리티를 높이기 위해 고안
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
첫번째 패스에서는
그림자의 불연속 부분을 찾아내고,
위치 정보를 압축해 출력 한다
CASE 2

불연속에는 두가지 유형이 있는데, 조각난 샘플의 위치는 다음과 같다
1. 불연속이 종료 됐을때(Exiting)
UMBRA(직접광을 완전히 가리는 폐쇄 영역) 안쪽
다음 인접 샘플은 UMBRA의 바깥에
2. 불연속이 입력 됐을때(Entering)
UMBRA 바깥
다음 인접 샘플은 UMBRA의 안쪽에
스크린 공간에서 그림자 맵 샘플을 가지고
오프셋 설정을 해준다

shadowmap 사각형 바깥을
모두 잘라내는 부분은
최적화의 여지가 남아있다

shadowmap 크기와 bias 오프셋은
상수값으로 처리할 수 있다
4방향으로 불연속을 찾아
단편화된 샘플로부터의 방향(투영좌표) 도출
R에는 수평 정보
G에는 수직 정보
2가지 출력 벡터로 테두리의 불연속된 부분의 위치를 압축
값에 따라 각각 4가지 상태를 가진다
현재는 입력 상태에서 불연속이 검출되는 경우
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
두번째 패스에서는
그림자의 불연속 공간을 보간해
새롭게 그림자를 생성하도록
0과 1사이의 XY 좌표를 생성한다
1패스에서 넘겨받은 데이터를 기반으로
불연속된 공간 X를 찾는다
1. 불연속의 길이를 가져온다
발견하지 못할 경우 음수를 리턴

2. 서브 샘플을 통해 정규화된
불연속 좌표를 만든다

3. 불연속 방향에 따라
새로운 가장자리 클립

4. 만약 축의 양 방향이
불연속이라면 기입
1. 방향 가장자리를 검색
각 방향에 1.0f를 추가

2. 양의 방향으로
추가 하위 샘플 자료 계산

3. 한 방향 / 양 방향 불연속에
대해서 각각 처리
올바른 방향일 경우
하위 샘플 자료만 추가

4. 생성 좌표 정규화
정규화 공간에서 만들어진 새로운 실루엣 영역을 보간 한다
왼쪽은 1패스 결과
오른쪽은 정규화 공간에서 계산한 채워넣을 영역
Undersampled area에서
조명 또는 이미지 버퍼에
새로운 실루엣의 정보를 통합
NO SMSR

SMSR

NO SMSR

근사값이 근거해 그림자를 생성
그림자 퀄리티 상승
특히 undersampled area에서 잘 수행

SMSR
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
성능 테스트는 좀 더 필요한 것 같아서 패스
스크린 공간에서 반복 수행해
불연속의 길이를 대략적으로 구할 수 있다
검색은 속도 / 품질에 영향
Light-to-view matrix를 매번 계산하는데 이것은 낭비
행렬 계산을 CPU에 넘겨 최적화할 수 있을 듯
어디에 사용하더라도
적은 채우기 비용으로 최종 품질을 향상
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
SMSR은 아직 연구중인 기술
낮은 해상도의 그림자 맵에서도
품질을 향상시키지만,
몇가지 결함을 가지고 있다
상단 SMSR
하단 NO SMSR

1. 불충분한 데이터를 일반화할 경우
예외처리를 할 수는 있지만 구현을 느리게 하고,
오히려 악화시킬 수도 있다
상단 SMSR
하단 NO SMSR

2. 필요한 데이터 부재
그림자 공간이 차폐될 경우 검색 기능이 버퍼의 끝에 도달할 수 있다
후처리 효과처럼 높은 해상도의 뷰포트로 해결
그러나 완벽하지는 않은듯
3. 실루엣 부분 짓이겨짐
일반적인 MLAA 방법은 L, Z, U 모양 패턴으로 불연속을 구분
모양 패턴으로 체크하는 것은 더 높은 정밀도의 결과를 얻는데 도움
현재 SMSR은 모양 패턴을 구별 할 수 없고 L형상으로 모두 처리
모양 패턴을 제대로 구별하지 못 하기 때문에
때때로 잘못된 근사치를 도출해 낼 경우가 있다
1.
2.
3.
4.
5.
6.

SMSR
1PASS
2PASS
Timings
Issue
Conclusion
SMSR은
undersampled area에서 그림자 맵을 부드럽게 하는 필터링 기술
이 기술은 특히 큰 씬을 빨리 채워야 할 때 유용하다
맵 샘플링 밀도는 감소하면서 그림자 실루엣을 부드럽게 유지하기 때문
아직 초기 단계
모양 패턴 추가, 부드러운 그림자,
temporal aliasing, Cascade Shadow Maps
더 연구 예정
sigraph03 shadow silhouette map
유사한 발상
http://www.ece.ucsb.edu/~psen/Papers/SIGGRAPH03_ShadowSilmaps.pdf

SMSR과 차이는
작은 커널, 바이어스 문제 감소
원 논문 자료
Vladimir Bondarev
http://bondarev.nl

More Related Content

Similar to [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space민웅 이
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Sampo Lappalainen
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesJangho Lee
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art TechnologiesSangYun Yi
 
[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)해강
 

Similar to [Shader study]Shadow Map Silhouette Revectorization(2014.01.06) (9)

Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
Real-Time Global Illumination Techniques
Real-Time Global Illumination TechniquesReal-Time Global Illumination Techniques
Real-Time Global Illumination Techniques
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art Technologies
 
[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)
 

More from 해강

[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self해강
 
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie해강
 
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...해강
 
[14.12.27] 종횡사해2014(DevRookie)
[14.12.27] 종횡사해2014(DevRookie)[14.12.27] 종횡사해2014(DevRookie)
[14.12.27] 종횡사해2014(DevRookie)해강
 
[14.12.08] 행렬대수(ShaderStudy)
[14.12.08] 행렬대수(ShaderStudy)[14.12.08] 행렬대수(ShaderStudy)
[14.12.08] 행렬대수(ShaderStudy)해강
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)해강
 
[14.10.10] TressFX 번역(self)
[14.10.10] TressFX 번역(self)[14.10.10] TressFX 번역(self)
[14.10.10] TressFX 번역(self)해강
 
[14.09.01] dynamic lighting in god of war3(shader study)
[14.09.01] dynamic lighting in god of war3(shader study)[14.09.01] dynamic lighting in god of war3(shader study)
[14.09.01] dynamic lighting in god of war3(shader study)해강
 
[14.06.28] 이 구역의 프로그래머는 나야(devrookie - 공개용)
[14.06.28]  이 구역의 프로그래머는 나야(devrookie - 공개용)[14.06.28]  이 구역의 프로그래머는 나야(devrookie - 공개용)
[14.06.28] 이 구역의 프로그래머는 나야(devrookie - 공개용)해강
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)해강
 
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)해강
 
[Shader study] Color control (2014.05.12)
[Shader study] Color control (2014.05.12)[Shader study] Color control (2014.05.12)
[Shader study] Color control (2014.05.12)해강
 
[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)해강
 
[Dev rookie]사망유희2013(13.12.21)
[Dev rookie]사망유희2013(13.12.21)[Dev rookie]사망유희2013(13.12.21)
[Dev rookie]사망유희2013(13.12.21)해강
 
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)해강
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)해강
 
[Softmax] 유익한 무엇에 관하여(13.09.27)
[Softmax] 유익한 무엇에 관하여(13.09.27)[Softmax] 유익한 무엇에 관하여(13.09.27)
[Softmax] 유익한 무엇에 관하여(13.09.27)해강
 
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)해강
 
[Dev rookie] 예술하고 싶어요(13.06.29)
[Dev rookie] 예술하고 싶어요(13.06.29)[Dev rookie] 예술하고 싶어요(13.06.29)
[Dev rookie] 예술하고 싶어요(13.06.29)해강
 
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)해강
 

More from 해강 (20)

[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
[16.04.12] 플레이어의 기억에 남을 인상적인 캐릭터를 제작하는 5가지 주제 - Self
 
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
[15.06.20] 네가 누구든, 내가 뭘하든 - DevRookie
 
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
[15.02.14] 진짜로땜빵하라하시면해야겠지만할시간도없고아무생각도없을때면어쩌면좋지라고소리쳐봤자아무도대답안해줄꺼고어쩔수없이이렇게저렇게어4신...
 
[14.12.27] 종횡사해2014(DevRookie)
[14.12.27] 종횡사해2014(DevRookie)[14.12.27] 종횡사해2014(DevRookie)
[14.12.27] 종횡사해2014(DevRookie)
 
[14.12.08] 행렬대수(ShaderStudy)
[14.12.08] 행렬대수(ShaderStudy)[14.12.08] 행렬대수(ShaderStudy)
[14.12.08] 행렬대수(ShaderStudy)
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
 
[14.10.10] TressFX 번역(self)
[14.10.10] TressFX 번역(self)[14.10.10] TressFX 번역(self)
[14.10.10] TressFX 번역(self)
 
[14.09.01] dynamic lighting in god of war3(shader study)
[14.09.01] dynamic lighting in god of war3(shader study)[14.09.01] dynamic lighting in god of war3(shader study)
[14.09.01] dynamic lighting in god of war3(shader study)
 
[14.06.28] 이 구역의 프로그래머는 나야(devrookie - 공개용)
[14.06.28]  이 구역의 프로그래머는 나야(devrookie - 공개용)[14.06.28]  이 구역의 프로그래머는 나야(devrookie - 공개용)
[14.06.28] 이 구역의 프로그래머는 나야(devrookie - 공개용)
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
 
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
[Shader study] Lighting Killzone : Shadow Fall - 발표메모(13.10.14)
 
[Shader study] Color control (2014.05.12)
[Shader study] Color control (2014.05.12)[Shader study] Color control (2014.05.12)
[Shader study] Color control (2014.05.12)
 
[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)[Dev rookie] Omnibus Me (2014.01.11)
[Dev rookie] Omnibus Me (2014.01.11)
 
[Dev rookie]사망유희2013(13.12.21)
[Dev rookie]사망유희2013(13.12.21)[Dev rookie]사망유희2013(13.12.21)
[Dev rookie]사망유희2013(13.12.21)
 
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)[Dev rookie] 이상적인 게임에 관하여(13.11.30)
[Dev rookie] 이상적인 게임에 관하여(13.11.30)
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)
 
[Softmax] 유익한 무엇에 관하여(13.09.27)
[Softmax] 유익한 무엇에 관하여(13.09.27)[Softmax] 유익한 무엇에 관하여(13.09.27)
[Softmax] 유익한 무엇에 관하여(13.09.27)
 
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
[Dev rookie] 나는 네가 무엇을 하고 있는지 알고 있다(13.08.24)
 
[Dev rookie] 예술하고 싶어요(13.06.29)
[Dev rookie] 예술하고 싶어요(13.06.29)[Dev rookie] 예술하고 싶어요(13.06.29)
[Dev rookie] 예술하고 싶어요(13.06.29)
 
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
 

[Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

  • 1. Shadow Map Silhouette Revectorization (SMSR) - Vladimir Bondarev Shader Study 해강
  • 2. 제 영어실력상 잘못된 오역이 있을 수 있습니다 제 기술실력상 잘못된 이해가 있을 수 있습니다 뭔가 좀 이상하다 싶으면 원문을 보세요 http://bondarev.nl
  • 4. 기본적으로 shadow map은 1. 호환성이 좋고, 2. 구현 난이도가 낮으며, 3. 여러 종류의 지형 처리에 용이 하다고 알려져 있다
  • 5. 그러나 일반적으로 앨리어싱 문제가 존재 완전히 앨리어싱을 제거하기 위한 기술은 (LogPSM, Irregular Z-Buffer Technique) 현 아키택처상 실시간에서는 불가능 Johnson, G. S., Mark, W. R., Burns, C. A., & Lee, J. (2005). The Irregular Z-Buffer and its Application to Shadow Mapping. ACM Transactions on Graphics, 24(4), 1462-1482. Retrieved from ftp://ftp.cs.utexas.edu/pub/techreports/tr04-09.pdf Lloyd, B., Govindaraju, N., & Quammen, C. (2007). Logarithmic Shadow Maps. Retrieved November 27, 2013, from http://gamma.cs.unc.edu/LOGPSM/
  • 6. Stamminger, M., & Drettakis, G. (2002). Perspective Dimitrov, R. (2007). Cascaded Shadow Maps. Retrieved 27, 2013, from http://developer.download.nvidia.com/SDK/10/openg l/screenshots/samples/cascaded_shadow_maps.html shadow maps. ACM Transactions on Graphics, 21(3), 557-562. Retrieved from http://www.cs.berkeley.edu/~ravir/6160fall04/papers/p557-stamminger.pdf Martin, T., & Tan, T. (2004). Anti-aliasing and 1. 샘플 재분배 최적화 (PSM, TSM, LiSPSM, CSM) Light Space Perspective Shadow Maps, Institut fur Continuity with Trapezoidal Shadow Maps. Retrieved December 27, 2013, from http://www.comp.nus.edu.sg/~tants/tsm.html 2. 필터링 기술 (VSM, PCF, BFSM) Reeves, W. T., Salesin, D. H., & Cook, R. L. (1987). Donnelly, W., & Lauritzen, A. (2006). Variance Shadow Maps. Retrieved December 27, 2013, from http://www.punkuser.net/vsm/ Wimmer, M., Scherzer, D., & Purgathofer, W. (2004). Rendering antialiased shadows with depth maps. ACM SIGGRAPH Computer Graphics, 24(4), 283- 291. Retrieved from http://maverick.inria.fr/Members/Cyril.Soler/DEA/O mbres/Papers/Reeves.Sig87.pdf 따라서 현재 실시간 기술은 위 두가지에 초점을 두고 있다 Computergraphik und Algorithmen – Arbeitsgruppefur Computergraphik. Retrieved 27, 2013, from http://www.cg.tuwien.ac.at/research/vr/lispsm/ Kim, J., & Kim, S. (2009). Bilateral Filtered Shadow Maps. ISVC ’09 Proceedings of the 5th International Symposium on Advances in Visual Computing: Part II, 49-58.
  • 7. SMSR은 MLAA 구현을 기반으로 GPU에서 그림자를 다시 근사 필터링 하는 기술 대부분의 undersampling 영역에서 속도 향상의 이점은 있지만, 그림자의 퀄리티가 떨어지게 된다 SMSR은 언더샘플링 영역에서 그림자 영역의 근사치를 구해서 shadowmap의 퀄리티를 높이기 위해 고안
  • 9. 첫번째 패스에서는 그림자의 불연속 부분을 찾아내고, 위치 정보를 압축해 출력 한다
  • 10. CASE 2 불연속에는 두가지 유형이 있는데, 조각난 샘플의 위치는 다음과 같다 1. 불연속이 종료 됐을때(Exiting) UMBRA(직접광을 완전히 가리는 폐쇄 영역) 안쪽 다음 인접 샘플은 UMBRA의 바깥에 2. 불연속이 입력 됐을때(Entering) UMBRA 바깥 다음 인접 샘플은 UMBRA의 안쪽에
  • 11. 스크린 공간에서 그림자 맵 샘플을 가지고 오프셋 설정을 해준다 shadowmap 사각형 바깥을 모두 잘라내는 부분은 최적화의 여지가 남아있다 shadowmap 크기와 bias 오프셋은 상수값으로 처리할 수 있다
  • 12. 4방향으로 불연속을 찾아 단편화된 샘플로부터의 방향(투영좌표) 도출 R에는 수평 정보 G에는 수직 정보
  • 13. 2가지 출력 벡터로 테두리의 불연속된 부분의 위치를 압축 값에 따라 각각 4가지 상태를 가진다
  • 14. 현재는 입력 상태에서 불연속이 검출되는 경우
  • 16. 두번째 패스에서는 그림자의 불연속 공간을 보간해 새롭게 그림자를 생성하도록 0과 1사이의 XY 좌표를 생성한다
  • 17. 1패스에서 넘겨받은 데이터를 기반으로 불연속된 공간 X를 찾는다
  • 18. 1. 불연속의 길이를 가져온다 발견하지 못할 경우 음수를 리턴 2. 서브 샘플을 통해 정규화된 불연속 좌표를 만든다 3. 불연속 방향에 따라 새로운 가장자리 클립 4. 만약 축의 양 방향이 불연속이라면 기입
  • 19. 1. 방향 가장자리를 검색 각 방향에 1.0f를 추가 2. 양의 방향으로 추가 하위 샘플 자료 계산 3. 한 방향 / 양 방향 불연속에 대해서 각각 처리 올바른 방향일 경우 하위 샘플 자료만 추가 4. 생성 좌표 정규화
  • 20. 정규화 공간에서 만들어진 새로운 실루엣 영역을 보간 한다 왼쪽은 1패스 결과 오른쪽은 정규화 공간에서 계산한 채워넣을 영역
  • 21. Undersampled area에서 조명 또는 이미지 버퍼에 새로운 실루엣의 정보를 통합
  • 22. NO SMSR SMSR NO SMSR 근사값이 근거해 그림자를 생성 그림자 퀄리티 상승 특히 undersampled area에서 잘 수행 SMSR
  • 24. 성능 테스트는 좀 더 필요한 것 같아서 패스
  • 25. 스크린 공간에서 반복 수행해 불연속의 길이를 대략적으로 구할 수 있다 검색은 속도 / 품질에 영향 Light-to-view matrix를 매번 계산하는데 이것은 낭비 행렬 계산을 CPU에 넘겨 최적화할 수 있을 듯
  • 26. 어디에 사용하더라도 적은 채우기 비용으로 최종 품질을 향상
  • 28. SMSR은 아직 연구중인 기술 낮은 해상도의 그림자 맵에서도 품질을 향상시키지만, 몇가지 결함을 가지고 있다
  • 29. 상단 SMSR 하단 NO SMSR 1. 불충분한 데이터를 일반화할 경우 예외처리를 할 수는 있지만 구현을 느리게 하고, 오히려 악화시킬 수도 있다
  • 30. 상단 SMSR 하단 NO SMSR 2. 필요한 데이터 부재 그림자 공간이 차폐될 경우 검색 기능이 버퍼의 끝에 도달할 수 있다 후처리 효과처럼 높은 해상도의 뷰포트로 해결 그러나 완벽하지는 않은듯
  • 31. 3. 실루엣 부분 짓이겨짐 일반적인 MLAA 방법은 L, Z, U 모양 패턴으로 불연속을 구분 모양 패턴으로 체크하는 것은 더 높은 정밀도의 결과를 얻는데 도움 현재 SMSR은 모양 패턴을 구별 할 수 없고 L형상으로 모두 처리 모양 패턴을 제대로 구별하지 못 하기 때문에 때때로 잘못된 근사치를 도출해 낼 경우가 있다
  • 33. SMSR은 undersampled area에서 그림자 맵을 부드럽게 하는 필터링 기술 이 기술은 특히 큰 씬을 빨리 채워야 할 때 유용하다 맵 샘플링 밀도는 감소하면서 그림자 실루엣을 부드럽게 유지하기 때문 아직 초기 단계 모양 패턴 추가, 부드러운 그림자, temporal aliasing, Cascade Shadow Maps 더 연구 예정
  • 34. sigraph03 shadow silhouette map 유사한 발상 http://www.ece.ucsb.edu/~psen/Papers/SIGGRAPH03_ShadowSilmaps.pdf SMSR과 차이는 작은 커널, 바이어스 문제 감소 원 논문 자료 Vladimir Bondarev http://bondarev.nl