24-Bit Colordepth가 충분하지 않습니까?


30

매우 부드러운 그라디언트에서 24 비트 색상 심도가 충분하지 않아 색상의 전환을 볼 수 없습니다. 어두운 장면이나 밤하늘에서 가장 많이 나타납니다.

왜 아무도 채널당 색 농도를 2 바이트로 변경하지 않습니까? 나는 많은 작업이 될 것이고 많은 하드웨어가 다시 채워 져야한다는 것을 알고 있지만 약간 성가신 것을 알았습니다. 저는 하드웨어 기술이 충분히 성숙하지 않다고 생각합니다.

왜 아무도 그렇게하지 않습니까?

다음은 내가 의미하는 바를 볼 수있는 "The War Z"사진입니다.

War Z 색상 전환


12
이미지가 JPEG 형식이므로 아티팩트가 생성 될 수 있습니다. 무손실 형식으로 예제를 제시 할 수 있습니까?
오리온 황제

농담 해? 비트 심도에 대해 불평하지만 JPEG 파일을 업로드합니까?
Tara

1
정확하게. JPG가 의미하는 바를 크게 보여줄 때 무손실 형식이 필요하지 않습니다. BTW :이 효과의 원인은 압축이 아닙니다. 당신의 자원을 구하십시오 ...
Liess Jemai

답변:


19

당신은 다소 스스로에게 이렇게 말했습니다. '그것은 많은 일이 될 것이고 많은 하드웨어를 교체해야 할 것입니다.' 그래픽 하드웨어의 최종 단계는 실제로는 간단하지만 (비싸면 모든 텍스처와 프레임 버퍼의 크기를 두 배로 늘리는 것은 그리 쉬운 일이 아닙니다) 더 높은 색상 심도 이미지를위한 '생태계'는 단순히 LCD 제조업체가 픽셀 당 최대 16 비트를 얻는 데 주력하지 않기 때문에 모든 사람을 대신하여 가치있는 지출을하는 정도는 10BPP에서 몇 가지 실험이 있었지만 RGB 신호를 32- 비트 채널).

요컨대, 대부분의 사람들이 아직 너무 적은 이익으로 생각하는 것은 너무 많은 일입니다. 그것은 '약간 성가신'일지도 모르지만, 그 성가심 수준이 너무 작아서 이미지 품질에 대한 다른 개선이 우선 순위를 잡고 있습니다.


1
최종 사용자가 직접 액세스 할 수는 없지만 이미지 / 비디오 전문가를 대상으로하는 일부 고급 27/30 "모니터는 내부적으로 외부에서 10 비트이며, 추가 4 비트를 사용하여 룩업 테이블을 저장하여 디스플레이의 색상을 교정합니다.
Dan Neely

@DanNeely : 모든 "최종 사용자"는 2 천 달러에 1 달러를 가질 수 있으며 Quadro와 같은 프로급 그래픽 카드도 필요합니다. 일부 사람들이 TV와 사운드 시스템에 대해 지불하는 것을 고려하면 이것은 나쁘지 않습니다.
Zan Lynx

@ 잔 린스 (ZanLynx) 나는 의도적으로 전문가만을위한 것이 아니라 전문가를 겨냥한 문구를 사용했다. 누구나 전체 스택을 구입할 수 있습니다. 그러나 가격이 너무 높고 혜택이 너무 희귀하여 소수의 사람들 만 할 수 있습니다. 예를 들어 Steam 사용자의 1.17 %만이 2560 디스플레이를 가지고 있습니다. 그리고 모니터는 10/14 비트 컬러를 포함하는 주류 공급 업체의 2011 년 모델 브랜드 2560 디스플레이 중 일부 (모두)가 고급 사용자가 우연히 얻을 가능성이있는 스택의 유일한 부분입니다. 그리고 싼 한국 수입품은 한동안 널리 보급되지 않았다. Quadro / etc 카드는 게이머와 표준 사용자에게 아무 것도 제공하지 않습니다.
Dan Neely

1
그러한 밴딩이 실제로 하늘을 렌더링하는 작업량을 줄이기위한 텍스트 최적화 일 가능성이 있습니까? 김프에서 24 비트 그라디언트를 만들면 그렇게 보이지 않습니다. 24 비트 그라디언트는 static.inky.ws/image/4306/gradient.png 를 참조하십시오 .
ldrumm

2
@ldrumm 아니오, 실제로, 당신은 실제로 가장 극단적 인 범위를 활용하고 김프에서 디더링을 활성화 했습니다. 디더링 (약간 밴딩이 보임)과 디더링 없이이 예제를 살펴보십시오 . 문제는 텍스처로 보편적으로 후 처리 디더링을 할 수 없으며 대부분의 텍스처는 그라디언트를 사용하여 만들지 않는다는 것입니다. 손으로 칠하고 비슷한 색상의 그라데이션이있는 넓은 영역의 형태가있는 경우 밴딩이있을 것입니다
PeterT

44

그래, 당신이있어 이를 통지하는 최초의 사람이 아니다 . :) 오늘날의 명암비가 높으면 디더링을 사용하지 않으면 구성 요소 당 8 비트로 눈에 띄는 밴딩없이 부드러운 그라데이션을 만들 수 없습니다.

디스플레이에서 채널당 8 비트 이상을 사용하는 것을 디스플레이 제조업체에서 " 딥 컬러 " 라고 합니다. 닭과 계란 문제로 인해 널리 보급되지 않았습니다. 딥 컬러 디스플레이는 딥 컬러를 출력 할 수있는 비디오 카드와 딥 컬러로 렌더링을 지원하는 게임 엔진이 없으면 쓸모가 없습니다. 마찬가지로, 게임 엔진이나 비디오 카드에는 디스플레이없이 깊은 색을 지원하는 지점이 없습니다. 따라서 하드웨어 제조업체와 게임 개발자는이 기술에 대한 지원을 추가 할 동기가 없습니다. 어느 쪽이든 개발 비용을 정당화 할 시장이 없기 때문입니다.


또한 제한된 8 비트 정밀도로 인해 밴딩을 수정하는 다른 방법이 있습니다. 앞서 언급했듯이 게임 엔진은 디더링 을 사용 하여 밴딩을 숨길 수 있습니다.


( 더블링 없이 256 색 팔레트가있는 고양이 그림. CC-By-SA 3.0 라이센스에 따라 Wikipedia 사용자 Wapcaplet 작성 .)

프레임 버퍼에 픽셀 값을 기록하기 전에 ± 0.5 / 255의 약간의 디더링을 추가하면 부드러운 그라디언트에서 밴딩을 숨기는 데 매우 효과적이며 본질적으로 눈에 띄지 않습니다. HDR 엔진을 사용하는 경우 톤 매핑 단계에서이 작업을 수행합니다.


마지막으로, 다른 사람들이 지적했듯이, 텍스처 압축은 이미지에서 8 비트 정밀도보다 더 큰 밴딩 유사 아티팩트의 소스가 될 수 있습니다. 말하기가 어렵지만 이것은 그림에서 하늘에서 일어나는 일 일 수 있습니다 .DXT 압축으로 인한 모든 아티팩트가 너무 많이 스며 들기 위해 JPEG 압축이 너무 많습니다.


+1-훌륭한 답변이며, 밴딩에 다른 원인이있을 가능성이 완전히 없습니다.
Steven Stadnicki

1
파일이 jpeg임을 알기 위해 +1 OP의 무손실 예는 데이터의 노이즈로 인한 잘못된 판단을 방지합니다.
ldrumm

@ldrumm 또한 끔찍한 게임 / 엔진 ...
브라이언 오티즈 1

디더링으로 인한 차이를 강조하기 위해 그림을 추가했습니다. 마음에 들지 않으면 되돌릴 수 있습니다. :)
BlueRaja-Danny Pflughoeft

13

또한 많은 LCD 패널이 채널당 8 비트가 아니라는 점도 주목할 가치가 있습니다. 값이 싼 것들은 적은 비트를 사용하고 그것을 숨기려고 다양한 트릭을 사용하는 경향이 있습니다. 예를 들어, 서로 인접한 두 색상 사이를 빠르게 전환 할 수 있습니다. http://www.anandtech.com/show/1557/3

http://msdn.microsoft.com/en-us/library/windows/desktop/jj635732%28v=vs.85%29.aspx 에서 DXGI가 채널당 10 비트 및 흰색보다 밝은 비트를 지원하는 방법에 대한 자세한 내용이 있습니다 .

D3D는 수년간 채널당 8 비트 이상을 지원했습니다. 개발자가 좋은 생각이라고 생각하면 채널당 16 비트에서 8 비트로 디더링하는 것을 막을 수있는 것은 없습니다.

물론 소스 데이터 (텍스처 등)가 8 비트 (또는 채널당 5-6-5 비트 인 DXT1 일 가능성이 높음) 인 경우 큰 도움이되지 않습니다. 나는 그 스크린 샷 (8-bpp 가우시안 블러가 훨씬 매끄럽게 만듭니다)에서 하늘과 관련이 있다고 생각하지만 확실하지 않습니다.


10

Steven Stadnicki의 대답은 정확합니다. 게임은 너무 많은 텍스처 메모리를 필요로하기 때문에 고정밀 텍스처를 거의 사용하지 않으며 결과적으로 픽셀 쉐이더에서 텍스처를 샘플링 할 때 너무 많은 메모리 대역폭을 사용합니다. 그러나 큰 질감을 요구하지 않는 솔루션이 있습니다. (나는 이것을 의견으로 게시 할 것이지만 너무 길다.)

Homeworld는 하늘 이미지를 꼭짓점 그라디언트로 인코딩 하여이 문제를 해결 합니다 . 이 기법은 하늘과 같이 크고 낮은 주파수의 이미지 (예 : 부드러운 그라디언트)에서 텍스처가 수많은 게임 내 픽셀을 덮는 데 효과적입니다.

또 다른 가능한 해결책은 히스토그램 정규화 를 하늘 이미지 에 적용 하는 것입니다. 텍스처 데이터가 어두운 밤하늘과 같이 좁은 값 범위 내에 있으면 각 색상 채널의 대부분의 비트에 유용한 데이터가 없습니다. 대신 다음을 수행하십시오.

  • 16 비트 TIFF와 같은 16 비트 형식으로 원본 텍스처를 작성하십시오.
  • 게임 엔진에 대한 텍스처를 준비 할 때 이미지에있는 가장 어두운 픽셀을 찾아이를 오프셋으로 추적하십시오. 이 픽셀 값은 0-1의 가능한 범위에서 0.1이라고 가정하십시오.
  • 다음으로 가장 밝은 픽셀을 찾아 가장 어두운 픽셀을 빼서 이미지의 값 범위를 얻습니다. 따라서 가장 밝은 픽셀이 여전히 꽤 어두운 경우 (0.35), 범위는 0.35-0.1 = 0.25입니다. 이미지에는 값 범위의 25 % 만 있습니다.
  • DXT / BC 압축 압축 게임 내 텍스처를 생성하십시오 . 모든 픽셀에서 가장 어두운 값을 빼고 곱하여 전체 색상 범위를 사용하십시오. 예제 계산에서 우리는 0.1의 어두운 값을 빼고, 사용 가능한 값 범위의 25 % 만 존재하기 때문에 모든 픽셀 값에 4x를 곱하여 게임 내 텍스처를 만듭니다. 16 비트 소스 이미지를 DXT 압축기의 8bpp 입력으로 양자화하기 전에이 모든 작업을 수행해야합니다. 출력 이미지는 이제 게임 내 형식에서 지원하는 전체 범위의 값을 활용합니다. 이미지에 실제로 존재하는 값을 나타 내기 위해 모든 비트를 할당합니다.
  • 어두운 값 오프셋 (0.1) 및 범위 (0.25)를 메타 데이터에 저장하십시오. 이것을 픽셀 셰이더에 입력으로 전달하십시오.
  • 픽셀 셰이더 코드에서 시프트되고 확장 된 텍스처를 샘플링하여 플로트 값으로 변환 한 다음 곱하기 / 추가하여 원래 색상 값을 복원합니다. 즉, 0.25를 곱하고 0.1을 더하여 소스 이미지에 저장된 값을 복원하십시오.

셰이더 코드가 감마 올바른지 확인하십시오 . sRGB 색상 공간에서 선형 공간으로 변환되지 않은 텍스처 샘플에 대해 수학 (조명 및 사후 처리)을 수행하면 설명하는 것과 같은 밴딩 아티팩트가 표시됩니다. 감마 보정은 눈이 가치 변화에 더 민감한 어두운 값에 더 많은 비트를 할당함으로써 이러한 종류의 문제를 완화하도록 돕기 위해 만들어졌습니다. 그러나 조명, 노출 또는 포스트 프로세싱 FX와 같이 계산할 때 감마 보정을 고려하지 않으면 쉽게 문제를 해결할 수 있습니다. 감마 자주 묻는 질문 도움이됩니다.


1

24 비트로는 충분하지 않지만 이미지 압축 알고리즘, 앨리어싱 또는 기타 디지털 아티팩트로 인해 이와 같은 문제가 발생하는 것이 훨씬 일반적입니다. 또한 디스플레이 기술의 역할을 간과하지 마십시오. 디지털 입력에 관계없이 디스플레이가 실제 밝기에서 적절한 단계를 생성하지 못할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.