Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

High dynamic range

on

  • 3,025 views

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

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

Statistics

Views

Total Views
3,025
Views on SlideShare
2,720
Embed Views
305

Actions

Likes
0
Downloads
34
Comments
0

4 Embeds 305

http://cagetu.egloos.com 285
http://flowrider.com 15
http://www.hanrss.com 4
http://www.flowrider.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

High dynamic range High dynamic range Presentation Transcript

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