GICache
카메라

선형 렌더링

개요

선형 라이팅은 씬의 모든 입력이 선형일 때 씬을 비추는 과정을 말합니다. 보통 텍스처는 사전에 감마가 보정된 상태로 존재합니다. 이것은 텍스처가 머티리얼 안에서 샘플링됐을 때 비선형임을 의미합니다. 만약이 텍스처가 일반 라이팅 계산에서 사용되면, 모든 입력이 사용 전에 선형이 되어 있을 것이 전제되고 있기 때문에 계산식의 결과가 약간 틀리게 됩니다.

선형 라이팅은 쉐이더의 입력과 출력 모두가 올바른 색 공간에 있어서 더 정확한 라이팅 결과를 얻을 수 있도록 해줍니다.

감마 파이프 라인

기존의 렌더링 파이프 라인에서는 모든 색상 및 텍스처가 감마 공간에서 샘플링됩니다. 즉, 감마 보정은 쉐이더에서 사용되기 전에 이미지나 색상에서 제거되지 않습니다. 비록 이 값들이 감마 공간에 존재할지라도, 모든 셰이더 연산은 입력값이 선형 공간에서 들어온다고 가정합니다. 게다가, 쉐이더 출력 값을 메모리에 쓸 때, 최종 픽셀에 감마 보정이 적용되지 않습니다. 이 시간의 대부분은 두 잘못 된 부분이 서로 상쇄하기 때문에 허용될 것이라고 생각됩니다. 그러나 실제로는 그렇지 않습니다.

선형 파이프 라인

만약 선형 라이팅이 활성화되면 쉐이더 프로그램의 입력은 감마 보정이 제거되어 제공됩니다. 색상의 경우, 이 변환은 선형 공간에 있으면 명시적으로 수행됩니다. 텍스처는 하드웨어 sRGB로 샘플링 되어 읽히며, 소스 텍스처는 감마 공간에서 제공되고, 그후 그래픽 하드웨어에서의 샘플링 결과는 ​​자동으로 변환됩니다. 이 입력은 다음 쉐이더에 제공되며 라이팅은 정상적으로 이루어집니다. 결과값은 다음 프레임 버퍼에 기록됩니다. 이 값은 감마 보정된 프레임 버퍼에 기록되거나, 선형 공간에 남아 추후의 감마 보정에 사용됩니다. 이것은 현재의 렌더링 설정에 따라 달라집니다.

선형과 감마 랜더링의 차이

선형 렌더링을 사용할 때 쉐이더 공식의 입력 값은 감마 공간의 것과 다릅니다. 즉, 빛이 표면에 닿으면 감마 파이프라인의 것과 다른 반응 곡선과 이미지 효과를 갖는다는 것입니다.

라이트 폴오프(Falloff)

어떤 거리에서 부터의 폴오프 및 법선 기반 라이팅은 두 가지 방법으로 변경됩니다. 첫 번째 변화는 선형 모드에서 렌더링 할 경우에 추가로 실행되는 감마 보정보다 라이트 반경은 크게 보이게 됩니다. 두 번째 변화는 라이팅 가장자리가 거칠어지는 것입니다. 이렇게하면 모델의 표면에 라이팅 강도의 폴오프를 수정합니다.

선형 강도 반응(Linear Intensity Response)

감마 렌더링을 사용할 때, 쉐이더에 제공되는 색상 및 텍스처는 감마 보정이 적용되어 있습니다. 쉐이더에서 사용될 때 높은 명도의 색상은 선형 조명에서 요구되는 것보다 밝아집니다. 라이트 강도가 증가함에 따라 표면은 비선형으로 빛날 것입니다. 이에 따라 특정 장소에서 너무 밝은 라이팅으로 이어져, 모델과 씬에서 색이 바랜 느낌이 납니다. 선형 렌더링을 사용할 때, 빛 강도가 증가함에 따라 표면에서의 반응은 선형으로 유지됩니다. 이것은 더 리얼한 표면 쉐이딩 및 표면에서 더 뛰어난 색상 반응으로 이어집니다.

Lee Perry-Smith 에 의해 Infinite, 3D Head Scan은 Crateive Commons Attribution 3.0 Unpoorted 라이센스 하에 허가 되었습니다. 아래의 링크에서 액세스 할 수 있습니다 : http://www.ir-ltd.net/

선형 및 감마 블렌딩

프레임 버퍼의 블렌딩을 실행할 때 블렌딩은 프레임 버퍼의 색상 공간에서 이루어집니다. 감마 렌더링을 사용할 때, 비선형 색상이 함께 블렌딩됩니다. 이것은 잘못된 것입니다. 선형 공간 렌더링을 할 때 블렌딩은 선형 공간에서 수행됩니다. 이에 따라, 정확하고 예상되는 결과를 얻을 수 있습니다.

선형 렌더링의 사용

선형 라이팅에 의해 렌더링된 씬은 시각적으로 다른 결과를 보여줍니다. 만약 감마 공간에서 렌더링 되는 프로젝트를 만들었을 때, 선형 렌더링으로 변경하면 올바르게 표시되지 않을 확률이 높습니다. 이때문에 감마 렌더링에서 선형 렌더링으로 전환하면 프로젝트를 업데이트하고 전환 전의 장점을 유지하는 데 시간이 걸릴 수 있습니다. 하지만, 궁극적으로는 훨씬 일관적이고 현실적인 라이팅을 가능하게 해줍니다. Unity에서 선형 렌더링을 켜주는 것은 간단 합니다. 이 기능은 프로젝트 단위로 구현되어 Player Settings의 Edit -> Project Settings -> Player -> Other Settings에 있습니다.

라이트 매핑

선형 렌더링을 사용했을 때, 모든 라이팅과 텍스처는 선형화 되어 라이트 매퍼에 전달된 모든 값도 재수정이 필요 합니다. 선형 라이팅과 감마 라이팅을 전환하면 라이트 맵을 다시 베이크할 필요가 있습니다. Unity는 라이트 매핑 인터페이스를 통해 잘못된 색상 공간에 있을 때 경고해줍니다.

지원되는 플랫폼

선형 렌더링은 모든 플랫폼에서 지원되지 않습니다. 현재 이 기능을 지원하는 빌드 대상은 :

  • Windows, Mac, Linux (StandAlone, web player)
  • Xbox 360, Xbox One
  • PlayStation 3 and 4

데스크톱 플랫폼이 일반적으로 선형 렌더링을 지원할지라도, 어떤 경우에는 그래픽 드라이버때문에 지원 불가능할 수도 있습니다. QualitySettings.desiredColorSpaceQualitySettings.activeColorSpace에서 이를 확인 가능합니다. 만약 원하는 색 공간은 선형이지만 활성 색상 공간이 감마 공간인 경우, 플레이어는 감마 공간으로 대체됩니다. 이는 사용하여 경고 상자를 표시하고 응용 프로그램이 제대로 표시되지 않는 것을 전하거나 플레이어를 강제로 종료하는데 사용 됩니다.

선형 및 Non HDR

HDR을 사용하지 않는 경우, sRGB읽기 및 sRGB 쓰기를 지원하는 특별한 프레임 버퍼가 사용됩니다 (읽을때 비 감마화 하여 기록할 때 감마화). 즉 텍스처와 마찬가지로 프레임 버퍼의 값은 감마 보정되는 것입니다. 이 프레임 버퍼 블렌딩 또는 텍스처로 제한되어 있는 경우, 값은 사용되기 전에 감마가 제거됩니다. 이들이 기록될 때, 기록되는 값은 선형 공간에서 감마 공간으로 변환됩니다. 만약 선형 모드로 렌더링 할 때 모든 포스트 프로세스 이펙트는 소스 및 타겟 버퍼는 sRGB 읽기 및 기록이 활성화 되어, 포스트 프로세스 및 포스트 프로세스 블렌딩이 선형 모드로 실행됩니다.

선형 및 HDR

HDR을 사용하면 렌더링은 플로팅 포인트 버퍼가 됩니다. 이러한 버퍼는 버퍼에 액세스 될 때 감마 공간의 변환을 필요로 하는 충분한 해상도가 있다. 즉 선형 모드로 렌더링 할 때 사용하는 렌더링 타겟은 선형 공간에 색상을 저장합니다. 즉 모든 블렌드 및 포스트 프로세스 효과는 선형 공간에서 명시적으로 실행된다는 것입니다. 만약 백버퍼(Backbuffer)에 기록되면 감마 보정이 적용됩니다.

GUI 및 선형으로 제작된 텍스처

Legacy GUI System를 렌더링 할 때 렌더링을 감마 공간으로합니다. 즉 레거시 GUI 텍스처는 읽을 때 감마를 제거해서는 안됩니다. 이것은 두 가지 방법으로 할 수 있습니다.

  • texture importer에서 텍스처 유형(texture type)을 GUI로 설정합니다.
  • advanced texture importer에서 ’Bypass sRGB Sampling’를 활성화합니다.

It is also important that lookup textures, masks, and other textures whose RGB values mean something specific and have no gamma correction applied to them should bypass sRGB sampling. This will cause the sampled texture not to remove gamma before it is used in the shader, and calculations will be done with the same value as is stored on disk.

GICache
카메라