[shader study]shadow map silhouette revectorization(2014.01.06)

34
Shadow Map Silhouette Revectorization (SMSR) - Vladimir Bondarev Shader Study 해강

Post on 11-Jul-2015

280 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

Shadow Map Silhouette Revectorization (SMSR)

- Vladimir Bondarev

Shader Study

해강

Page 2: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

제 영어실력상 잘못된 오역이 있을 수 있습니다 제 기술실력상 잘못된 이해가 있을 수 있습니다

뭔가 좀 이상하다 싶으면

원문을 보세요 http://bondarev.nl

Page 3: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 4: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

기본적으로 shadow map은

1. 호환성이 좋고, 2. 구현 난이도가 낮으며,

3. 여러 종류의 지형 처리에 용이

하다고 알려져 있다

Page 5: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

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/

그러나 일반적으로 앨리어싱 문제가 존재 완전히 앨리어싱을 제거하기 위한 기술은

(LogPSM, Irregular Z-Buffer Technique) 현 아키택처상 실시간에서는 불가능

Page 6: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

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

Martin, T., & Tan, T. (2004). Anti-aliasing and Continuity with Trapezoidal Shadow Maps. Retrieved December 27, 2013, from http://www.comp.nus.edu.sg/~tants/tsm.html

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

2. 필터링 기술 (VSM, PCF, BFSM)

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

Wimmer, M., Scherzer, D., & Purgathofer, W. (2004). Light Space Perspective Shadow Maps, Institut fur Computergraphik und Algorithmen – Arbeitsgruppefur Computergraphik. Retrieved 27, 2013, from http://www.cg.tuwien.ac.at/research/vr/lispsm/

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

Donnelly, W., & Lauritzen, A. (2006). Variance Shadow Maps. Retrieved December 27, 2013, from http://www.punkuser.net/vsm/

Reeves, W. T., Salesin, D. H., & Cook, R. L. (1987). 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

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.

Page 7: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

SMSR은 MLAA 구현을 기반으로 GPU에서 그림자를 다시 근사 필터링 하는 기술

대부분의 undersampling 영역에서 속도 향상의 이점은 있지만,

그림자의 퀄리티가 떨어지게 된다

SMSR은 언더샘플링 영역에서 그림자 영역의 근사치를 구해서 shadowmap의 퀄리티를 높이기 위해 고안

Page 8: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 9: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

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

Page 10: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

불연속에는 두가지 유형이 있는데, 조각난 샘플의 위치는 다음과 같다

1. 불연속이 종료 됐을때(Exiting) UMBRA(직접광을 완전히 가리는 폐쇄 영역) 안쪽

다음 인접 샘플은 UMBRA의 바깥에

2. 불연속이 입력 됐을때(Entering) UMBRA 바깥

다음 인접 샘플은 UMBRA의 안쪽에

CASE 2

Page 11: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

shadowmap 사각형 바깥을 모두 잘라내는 부분은

최적화의 여지가 남아있다

shadowmap 크기와 bias 오프셋은 상수값으로 처리할 수 있다

스크린 공간에서 그림자 맵 샘플을 가지고 오프셋 설정을 해준다

Page 12: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

4방향으로 불연속을 찾아 단편화된 샘플로부터의 방향(투영좌표) 도출

R에는 수평 정보 G에는 수직 정보

Page 13: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

2가지 출력 벡터로 테두리의 불연속된 부분의 위치를 압축

값에 따라 각각 4가지 상태를 가진다

Page 14: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

현재는 입력 상태에서 불연속이 검출되는 경우

Page 15: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 16: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

두번째 패스에서는 그림자의 불연속 공간을 보간해 새롭게 그림자를 생성하도록

0과 1사이의 XY 좌표를 생성한다

Page 17: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1패스에서 넘겨받은 데이터를 기반으로 불연속된 공간 X를 찾는다

Page 18: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

4. 만약 축의 양 방향이 불연속이라면 기입

1. 불연속의 길이를 가져온다 발견하지 못할 경우 음수를 리턴

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

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

Page 19: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

4. 생성 좌표 정규화

1. 방향 가장자리를 검색 각 방향에 1.0f를 추가

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

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

Page 20: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

정규화 공간에서 만들어진 새로운 실루엣 영역을 보간 한다

왼쪽은 1패스 결과 오른쪽은 정규화 공간에서 계산한 채워넣을 영역

Page 21: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

Undersampled area에서 조명 또는 이미지 버퍼에

새로운 실루엣의 정보를 통합

Page 22: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

근사값이 근거해 그림자를 생성

그림자 퀄리티 상승 특히 undersampled area에서 잘 수행

NO SMSR SMSR NO SMSR SMSR

Page 23: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 24: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

성능 테스트는 좀 더 필요한 것 같아서 패스

Page 25: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

스크린 공간에서 반복 수행해 불연속의 길이를 대략적으로 구할 수 있다

검색은 속도 / 품질에 영향

Light-to-view matrix를 매번 계산하는데 이것은 낭비 행렬 계산을 CPU에 넘겨 최적화할 수 있을 듯

Page 26: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

어디에 사용하더라도 적은 채우기 비용으로 최종 품질을 향상

Page 27: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 28: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

SMSR은 아직 연구중인 기술

낮은 해상도의 그림자 맵에서도 품질을 향상시키지만,

몇가지 결함을 가지고 있다

Page 29: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. 불충분한 데이터를 일반화할 경우

예외처리를 할 수는 있지만 구현을 느리게 하고, 오히려 악화시킬 수도 있다

상단 SMSR 하단 NO SMSR

Page 30: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

2. 필요한 데이터 부재

그림자 공간이 차폐될 경우 검색 기능이 버퍼의 끝에 도달할 수 있다 후처리 효과처럼 높은 해상도의 뷰포트로 해결

그러나 완벽하지는 않은듯

상단 SMSR 하단 NO SMSR

Page 31: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

3. 실루엣 부분 짓이겨짐

일반적인 MLAA 방법은 L, Z, U 모양 패턴으로 불연속을 구분 모양 패턴으로 체크하는 것은 더 높은 정밀도의 결과를 얻는데 도움

현재 SMSR은 모양 패턴을 구별 할 수 없고 L형상으로 모두 처리

모양 패턴을 제대로 구별하지 못 하기 때문에 때때로 잘못된 근사치를 도출해 낼 경우가 있다

Page 32: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

1. SMSR 2. 1PASS 3. 2PASS 4. Timings 5. Issue 6. Conclusion

Page 33: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

SMSR은 undersampled area에서 그림자 맵을 부드럽게 하는 필터링 기술

이 기술은 특히 큰 씬을 빨리 채워야 할 때 유용하다 맵 샘플링 밀도는 감소하면서 그림자 실루엣을 부드럽게 유지하기 때문

아직 초기 단계

모양 패턴 추가, 부드러운 그림자, temporal aliasing, Cascade Shadow Maps

더 연구 예정

Page 34: [Shader study]Shadow Map Silhouette Revectorization(2014.01.06)

sigraph03 shadow silhouette map 유사한 발상

http://www.ece.ucsb.edu/~psen/Papers/SIGGRAPH03_ShadowSilmaps.pdf

SMSR과 차이는

작은 커널, 바이어스 문제 감소

원 논문 자료 Vladimir Bondarev http://bondarev.nl