Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

High dynamic range

Kasa에서 발표한 HDR 발표 문서입니다.
cagetu.egloos.com

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

High dynamic range

  1. 1. High Dynamic Range Kasa Study(www.dev3d.net) 이창희(cagetu@softnette.com) 2010.10.31
  2. 2. HDR? • High Dynamic Range의 약자 • 이미 현시대 게임에서는 보편화된 기능 • 특별히 설명할 말 없음… ㅌㅌㅌ – (앞으로 나오는 것들도 설명은 간략히 넘어가 겠음)
  3. 3. HDR? • 왜 HDR을 발표할까? – 널리 사용되고 있지만, 결과가 좋게 나오게 하기란 생각보다 쉬 운 작업이 아님. – 생각보다 많은 작업자들은 DirectX Sample에 의존적인 듯 • 구현에 대한 설명이 너무 부족함 – GDC, SIGGRAPH, CEDEC에서는 아직도 HDR이 언급된 발표가 이어지고 있음. • Uncharted2, tri-Ace 사의 발표 등… • 우리가 게임에서 구현하는 그래픽은 Realistic이 아니라, Photo-Realistic 한 것!!!!! – 결국 HDR은 그 시작!!! • 결국 좋은 결과물을 얻기 위해서는 HDR 과정에 대한 전반적 은 이해가 필요함
  4. 4. HDR 작업 목록
  5. 5. HDR Data • HDR을 처리하기 위해서는 HDR 데이터가 필요. 즉, 0~1 사이 이상으로 정보가 기록 되어 있어야 함. – 간단하게 Floating Texture를 사용 • A16FR16FG16GB16F – HDR Data 압축하기 • LogLUV, RGBE
  6. 6. HDR Data 압축 • LogLUV – Playstation3에서는 Floating Texture를 사용할 수 없기 때 문에, HDR을 표현하기 위한 압축 기술이 연구되었고, 그 중 가장 보편적으로 사용되는 방법이 LogLUV 압축임 • Heavenly Sword에서 사용하기 시작 – http://www.anyhere.com/gward/papers/jgtpap1.pdf – 그냥 Color를 압축해서, 복원하는 식이라면, 그렇게 눈에 띄는 결함이 없음. – 하지만, Luminance를 구하는 과정에서 손실이 많아서, 상 대적으로 디테일이 많이 떨어짐.
  7. 7. Gamma Correction • HDR 처리의 linear space에 color 정보가 되어 있다고 가정한다. • 즉, gamma가 1.0이 되어야 함을 의미
  8. 8. Gamma Correction (Cont’) • Post-Processing을 작업할 때에는 – 처음 텍셀을 sRGB->linear 변환을 해주고, 마지막 Step의 마지막 Pass에서 linear->sRGB 변환을 해줘 야 한다.
  9. 9. Linear-Space Lighting: Conclusion “Drake! You must believe in linear-space lighting!” [Uncharted 2 : HDR Lighting]에서 발췌
  10. 10. Tone Mapping • HDR 영역을 LDR 영역으로 표현하기 위한 방법 – 평균 Luminance를 중심으로 0~1 사이의 값으로 매핑. • 즉, 우리가 해야 할 것은 1. 평균 Luminance를 구하고, • Luminance 구하기 2. Luminance를 중심으로 0~1 사이로 • Tone Mapping Operator
  11. 11. Luminance 구하기 • Luminance는 빛의 밝기를 의미 • 위의 공식을 이용하여, 평균 Luminance를 구함. – 최종 결과는 1x1 Luminance • 장면의 평균 밝기는 각 픽셀의 밝기를 구하는 것부 터 출발 – 각 픽셀의 밝기 구하기?
  12. 12. RGB -> Luminance • RGB를 Luminance를 변환 1. Luminance 상수를 이용하여, Luminance 계산 • LUMINANCE = float3(0.2125f, 0.7154f, 0.0721f); dot(rgb, LUMINANCE); • Luminance를 다시 RGB로 전환 불가 2. CIE Yxy Encoding을 이용하여, 압축 • RGB -> CIE XYZ -> CIE Yxy (Y값이 Luminance) • 이후 Tone mapping을 통한 luminance의 값의 변화 를 가지고 다시 RGB로 변환이 가능
  13. 13. Luminance Adapation • 광적응 효과 – 갑자기 어두운 곳에서 밝은 곳으로 나왔다거나, 밝은 곳에서 어 두운 곳으로 들어갔을 때의 서서히 눈이 적응하는 효과 • 시간에 따라, 갱신할 장면의 luminance로 변경 • Luminance History Function – 급작스러운 변화를 막기 위해서, 이전 16프레임의 Luminance값 을 저장하고 있다가, 그 값과 비교하여, 변경되었다고 판단될 경 우에만 luminance를 갱신 • 16Frame의 Lumiance를 저장하기 위해서 4x4 렌더타겟이 필요
  14. 14. Middle Grey – 현재 장면의 Luminance가 0.36이고, middle bright value 가 0.18이라고 한다면, 최종 이미지의 luminance value는 원본 이미지의 절반의 값의 범위가 되는 것이다. (노출 정 도라고 봐도 된다.) • 날씨의 변화나 시간에 따라, 이 값이 변화될 필요가 있 다. – Middle grey는 일반적으로 0.18 • 자동으로 구할 수도 있다. (Auto Exposure)
  15. 15. Tone Mapping Operator • 실제 LDR로 변환하는 과정을 처리하는 연산자 • 어떤 톤 매핑 연산을 사용했느냐에 따라 느낌이 다름 – Reinhard가 발표한 공식에서 발전하기 시작 – Star Ocean 4 에서는 공식이 아니라, 실제 카메라의 C-MOS 정 보 등을 기초로 하여, Flim 스럽게 만들기도 함. – Uncharted2에서 Flimic Tonemapping을 언급하면서 화두!! • Tone Mapping Operator – Reinhard (+Modified) – Flimic – Uncharted2
  16. 16. Reinhard • Reinhard – LumScaled : 이전에 구한 노출 정도 • Reinhard(Modified) – 흰색의 경우, 매우 밝게 조절된 형태로 원할 수도 있기 때문에, 새로운 공식이 등장 – 흰색은 LDR 이미지를 톤매핑할 때, 명암의 감소를 최소화 한다. 이는 White Clamping 이라고 부르기도 한다. • “Interactive Time-Dependent Tone Mapping Using Programmable Graphics Hardware” – 최종 색상을 결정할 때, 아래와 같이 Saturation을 적용 • LumCompressed * pow(color / pixelLuminance, LUMINANCE_SATURATION);
  17. 17. Flimic • John Hable이 Unchated2 HDR Lighting 발표 문서에서 소개한 내용 • Flim에서의 색상 Curve가 더 나은 결과를 보여준다는 것에서 착안 • Reinhard와 비교 – Reinhard가 상대적으로 Grayish
  18. 18. Flimic Tone Mapping x = max(0, LinearColor-0.004); GammaColor = (x*(6.2*x+0.5))/(x*(6.2*x+1.7)+0.06); • pow(x,1/2.2) 가 포함되어 있다. • 즉, Gamma Correction을 위해, Albedo 텍스쳐를 읽을 때, pow(x, 2.2)를 해주었다면, 모니터로 보낼 때, pow(x, 1/2.2)를 해주어야 하 지만, 이 공식에는 Bake되어 있기 때문에, 별도의 과정이 필요없다. • 하지만, 일반적으로 마지막 패스에서 pow(x, 1/2.2)를 해주기 때 문에, 이 공식을 사용할 경우, 결과에 pow(1, 2.2)를 해주어서, 최 종 패스에서 처리하는 결과와 맞춰주어야 한다. [Uncharted 2 : HDR Lighting]에서 발췌
  19. 19. Uncharted 2 • John Hable의 Blog 를 통해서, Fixed 된 버전이라고 소개. • Gamma 보정을 최종 적으로 적용해주어야 한다. (pow(x, 1/2.2))
  20. 20. Glare(Bloom) • Bright Pass – Tone Mapping을 그대 로 적용 – Threshold를 적절히 조 절 • 특별히 복잡한 작업 공 정이 필요하지 않음 • 하지만……
  21. 21. Glare (Cont’) • 실제 화상에서는 어지간히 강한 빛이 아니면, 큰 Glare 가 나오지 않는다. – 결과적으로 렌더링 화상의 Dynamic Range(DR)가 본래의 DR에 비해 충분하지않기 때문에, Threshold 값을 낮춤으로 서 강제로 Glare를 만들기를 시도한다. • 그 결과, Diffuse에서도 부자연스럽게 Glare가 나오는 현상과 색상 정보다 전부 타들어간 듯이 날아가 버리 는 현상이 자주 발생한다. – 뭔가 저렴해 보인다!!!!!! • 즉, 적합한 HDR 연산을 통한 처리와 물리적인 라이팅 이 뒷받침 되지 않는다면, 이런 문제가 발생하기 쉽다.
  22. 22. Pipeline Tone Mapping Operation
  23. 23. Pipeline(Cont’) • 톤매핑을 선행해 서, 이미 고휘도 부분을 추출한 상태이기 때문에, 순서가 변경되어 도 특별히 부자 연스러운 부분이 없다. • 오히려, 연산량 을 줄일 수 있는 장점이 있을 것 으로 보임
  24. 24. 기타 효과 • Vignette – 카메라 렌즈의 구경에 따라 사진의 테두리 쪽으로 약간의 노이 즈가 생기는 현상. 특히, 오래된 사진기일 수록 많이 발생 • Blue Shift – 매우 낮은 밝기가 되어, 작은 수의 간상체(rod)가 남게되고, 추상 체(cone)이 주 광자 수용체가 되게 되면, 파란색 색조로 색상 전 환이 이루어 진다. • Grain Filter – 어두운 곳으로 가면, 눈에 들어오는 광자가 적어지는 까닭에 노 이즈가 심하고 전반적으로 디테일이 떨어지는 현상도 발생한다. • 어두운 곳에서 사진을 찍으면, 화면이 깨진 것 같은 느낌!
  25. 25. Channel-Based Color Correction • Levels – Photoshop에서의 Levels command – Gamma, contrast, 전체 이미지의 dynamic range 를 수정하거나 독립적으로 채널 색상에 대한 속성 들을 조정할 수 있다. • Curves – 생략
  26. 26. 결론 • 실제 작업해보면, 위의 내용들이 대단히 쉽지 않은 과 정임을 알 수 있음. – 공부해둬야 할 것도 한 트럭!! • 하지만, 향후 렌더링 프로세스 전반에 영향을 주는 가 장 기본적이고 중요한 작업 과정 – 이것은 끝이 아닌 시작!! • Tone Mapping Operator의 경우, 어떤 것이 좋은 지는 결과를 보고 각자 판단하는 것이 좋을 듯. • 파이프라인이 길어서, 컨트롤할 Parameter들이 많으니, 비교적 많은 테스트가 필요. – Parameter들에 대한 결과가 꽤나 민감함!!!
  27. 27. 참고자료 • “CrazyXIII : HDR”를 참고하시오!!! • DirectX Sample “HDR Lighting” • Kasa 이전 발표 – “Conversion Color Space & Filtering” - 이창희
  28. 28. Q & A
  29. 29. 다음 편 예고 • “Physically Based Shading Model” • SIGGRAPH10에서 발표된 내용 – 이전부터 이야기는 있었던 듯(By Tri-ace 社) • 사실 HDR에 대한 정리 작업은 이 과정을 잘하기 위한 선행 작업이었음. • Brief – Glare를 조절하기 위해서, Threshold 값에만 의존하십니까? • Threshold를 만지면, 전체 화면이 뭉개진다!!!! – 이 문제는 물체가 가지는 dynamic range의 값 자체가 잘못 되어 서 그런거임… • 그럼 잘하려면?

    Be the first to comment

    Login to see the comments

  • xloth

    Jan. 30, 2015
  • hyuksupark1

    Dec. 11, 2016

Kasa에서 발표한 HDR 발표 문서입니다. cagetu.egloos.com

Views

Total views

4,123

On Slideshare

0

From embeds

0

Number of embeds

320

Actions

Downloads

52

Shares

0

Comments

0

Likes

2

×