스캔라인 렌더링
Scanline rendering스캔 라인 렌더링(스캔 라인 렌더링 및 스캔 라인 렌더링)은 3D 컴퓨터 그래픽에서 폴리곤 단위 또는 픽셀 단위 대신 행 단위로 작동하는 가시적인 표면 판별 알고리즘입니다.렌더링할 모든 폴리곤은 먼저 처음 나타나는 위쪽 Y 좌표를 기준으로 정렬된 다음 정렬된 목록 맨 앞에 있는 폴리곤과 스캔 라인의 교차점을 사용하여 이미지의 각 행 또는 스캔 라인이 계산되며, 정렬된 목록은 활성 스캔 라인이 진행됨에 따라 더 이상 볼 수 없는 폴리곤을 폐기하도록 업데이트됩니다.그림을 아래로 내리깔았다.
이 방법의 주요 장점은 스캔 평면의 법선을 따라 정점을 정렬하면 에지 간 비교 횟수가 줄어든다는 것입니다.또 다른 장점은 모든 정점의 좌표를 주 메모리에서 작업 메모리로 변환할 필요가 없다는 것입니다. 즉, 현재 스캔 라인과 교차하는 에지를 정의하는 정점만 활성 메모리에 있으면 되고 각 정점은 한 번만 읽힙니다.메인 메모리는 중앙 처리 장치와 캐시 메모리 사이의 링크에 비해 매우 느리기 때문에 메인 메모리의 정점에 다시 접근하는 것을 피하면 상당한 속도를 높일 수 있습니다.
이러한 종류의 알고리즘은 Phong 반사 모델이나 Z 버퍼 알고리즘과 같은 많은 다른 그래픽 기술과 쉽게 통합될 수 있습니다.
알고리즘.
일반적인 방법은 투영된 폴리곤의 가장자리를 스캔 라인당 하나씩 버킷에 삽입하는 것으로 시작합니다. 래스터라이저는 AET(Active Edge Table)를 유지합니다.항목은 정렬 링크, X 좌표, 그라데이션 및 바인딩된 폴리곤에 대한 참조를 유지합니다.다음 스캔 라인을 래스터라이징하려면 더 이상 관련이 없는 에지가 제거됩니다. 현재 스캔 라인의 Y 버킷에서 새 에지가 추가되고 X 좌표로 정렬되어 삽입됩니다.액티브 엣지 테이블엔트리에는 X 및 기타 파라미터 정보가 증가합니다.활성 에지 테이블 항목은 버블 정렬에 의해 X 정렬 목록에 유지되므로 두 모서리가 교차할 때 변경됩니다.모서리를 업데이트한 후 활성 모서리 테이블을 X 순서로 이동하여 가시적인 범위만 내보내고 Z 정렬된 활성 범위 테이블을 유지하며 모서리가 [citation needed]교차될 때 표면을 삽입 및 삭제합니다.
변종
이것과 Z 버퍼링 사이의 하이브리드는 액티브 에지 테이블 정렬을 없애고 대신 한 번에 한 스캔 라인을 Z 버퍼로 래스터라이즈하여 한 스캔 라인에서 다음 스캔 라인까지 액티브 폴리곤 스팬을 유지합니다.
다른 형태에서는 ID 버퍼가 중간 단계에서 래스터라이즈되어 결과적으로 생기는 가시 화소의 지연 쉐이딩을 가능하게 한다.
역사
스캔라인 렌더링 기술의 첫 번째 출판은 1967년 [1]Wylie, Romnie, Evans 및 Erdahl에 의해 이루어졌을 것입니다.
스캔라인 렌더링 방법의 다른 초기 개발은 1969년 [2]Bouknight, 1972년 [3]Newell, Newell 및 Sancha에 의해 이루어졌다.이 방법들에 대한 초기 작업의 대부분은 유타 대학의 Ivan Sutherland 그래픽 그룹과 솔트레이크 시티의 Evans & Sutherland 회사에서 수행되었습니다.
실시간 렌더링에 사용
초기 Evans & Sutherland ESIG 라인의 이미지 생성기(IG)는 하드웨어의 '온 더 플라이' 기술을 채택하여 프레임 버퍼 없이 한 번에 한 래스터 라인씩 이미지를 생성함으로써 고가의 메모리를 절약할 수 있었습니다.이후 변형은 하이브리드 접근법을 사용했다.
닌텐도 DS는 래스터라이즈된 이미지를 VRAM에 캐싱할 수 있는 옵션으로 이러한 방식으로 3D 장면을 렌더링하는 최신 하드웨어입니다.
1980년대 게임기에 널리 보급된 스프라이트 하드웨어는 단순한 2D 형태의 스캔라인 렌더링으로 볼 수 있습니다.
이 기술은 첫 번째 Quake 엔진에서 환경의 소프트웨어 렌더링을 위해 사용되었습니다(단, 움직이는 물체는 위쪽에서 Z 버퍼링되었습니다).정적 풍경에서는 BSP에서 파생된 정렬을 우선순위로 사용했습니다.고심도의 복잡한 장면(즉, 하드웨어 지원 없이 원근감 있는 텍스처 매핑)을 처리하는 데 있어 Z-버퍼/페인터의 타입 알고리즘보다 우수하다는 것이 입증되었습니다.이러한 사용은 현재 PC에서 일반적으로 사용되는 Z 버퍼 기반의 GPU가 널리 채택되기 전에 이루어졌습니다.
소니는 기존의 CPU/GPU 배열에 정착하기 전에 PlayStation 3 개발 중에 두 번째 Cell 프로세서에서 소프트웨어 스캔라인 렌더러를 실험했다.
유사한 기술
타일 렌더링(PowerVR 3D 칩)에서도 유사한 원리가 사용됩니다. 즉, 원시 요소가 화면 공간에 정렬된 다음 빠른 온칩 메모리에 한 번에 하나씩 렌더링됩니다.Dreamcast는 직접 스캔 아웃을 위해 한 번에 한 줄씩 타일을 래스터라이징하는 모드를 제공하므로 하드웨어 스캔 라인 렌더링의 정신에 따라 완전한 프레임 버퍼가 필요하지 않습니다.
일부 소프트웨어 래스터라이저는 '스팬 버퍼링'(또는 '커버리지 버퍼링')을 사용합니다. 이 경우 정렬된 클리핑된 스팬 목록이 스캔라인 버킷에 저장됩니다.최종 단계에서 가시적인 픽셀만 래스터라이징하기 전에 원시 요소가 이 데이터 구조에 순차적으로 추가됩니다.
Z 버퍼 알고리즘과의 비교
Z 버퍼링에 비해 스캔라인 렌더링의 주요 장점은 가시 픽셀의 처리 횟수를 최소로 유지한다는 것입니다. 이는 투명 효과를 사용하지 않을 경우 항상 한 번으로 유지된다는 것입니다. 이는 고해상도 또는 고가의 음영 계산의 경우에 유용합니다.
최신 Z 버퍼 시스템에서는 대략적인 전후 정렬('역 페인트 처리 알고리즘' 접근), 초기 Z 거부(계층형 Z와 함께) 및 프로그래밍 가능한 GPU에서 가능한 덜 일반적인 지연 렌더링 기술을 통해 유사한 이점을 얻을 수 있습니다.
래스터에서 동작하는 스캔라인 기법에는 과부하가 정상적으로 처리되지 않는다는 단점이 있습니다.
이 기법은 원소의 수가 증가함에 따라 잘 확장되는 것으로 간주되지 않습니다.이는 렌더링 중에 필요한 중간 데이터 구조의 크기 때문에 복잡한 장면의 경우 Z 버퍼 크기를 초과할 수 있습니다.
그 결과, 현대의 인터랙티브 그래픽스 애플리케이션에서는, Z버퍼는 어디에서나 볼 수 있게 되었습니다.Z 버퍼를 사용하면 더 많은 양의 프리미티브를 최신 하드웨어에 친숙한 방식으로 병렬로 선형으로 통과할 수 있습니다.변환된 좌표, 속성 구배 등은 그래픽 칩에서 벗어날 필요가 없습니다. 가시적인 픽셀 및 깊이 값만 저장됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Wylie, C, Romnie, G W, Evans, D C 및 Erdahl, Proc.의 "Halftone Perspective Drawings by Computer"입니다.AFIPS FJCC 1967, 제31, 49권
- ^ Bouknight W.J, UI, Coordinated Science Laboratory, 1969년 9월, "하프톤 컴퓨터 그래픽 표현 생성을 위한 개선된 절차"
- ^ Proc ACM National Conf. 1972년 Newell, M E, Newell R. G 및 T.L. Sancha, "음영된 그림 문제에 대한 새로운 접근법"