병렬 렌더링
Parallel rendering병렬 렌더링(또는 분산 렌더링)은 컴퓨터 그래픽의 계산 영역에 병렬 프로그래밍을 적용하는 것이다.렌더링 그래픽은 과학 시각화, 의료 시각화, CAD 애플리케이션 및 가상 현실에서 발생하는 복잡한 장면을 위한 방대한 계산 리소스를 필요로 할 수 있다.최근 연구에서는 또한 병렬 렌더링을 모바일 게임에 적용하여 전력 소비량을 줄이고 그래픽 충실도를 높일 수 있다고 제안하였다.[1]렌더링은 여러 도메인(예: 픽셀, 객체, 프레임)에서 당혹스러울 정도로 병렬적인 작업 부하로, 따라서 많은 연구의 대상이 되어 왔다.
작업량 분포
병렬 렌더링을 사용하는 데는 종종 경쟁적인 두 가지 이유가 있다.성능 스케일링을 통해 프레임을 보다 빠르게 렌더링할 수 있고, 데이터 스케일링을 통해 대규모 데이터 세트를 시각화할 수 있다.워크로드를 분산하는 다른 방법은 한 가지 유형의 확장이 다른 유형에 비해 유리하게 작용하는 경향이 있다.또한 지연 시간 및 로드 밸런싱 문제와 같은 다른 장점과 단점도 있을 수 있다.원형을 분산하기 위한 세 가지 주요 옵션은 전체 프레임, 픽셀 또는 객체(예: 삼각형 메쉬)이다.
프레임 분포
각 처리 장치는 다른 관점이나 시간의 순간으로부터 전체 프레임을 렌더링할 수 있다.서로 다른 관점에서 렌더링된 프레임은 안티앨리어싱으로 영상 화질을 개선하거나 필드 깊이 및 3차원 디스플레이 출력 같은 효과를 추가할 수 있다.이 접근 방식은 성능 확장은 양호하지만 데이터 확장은 불가능하다.
순차 프레임을 병렬로 렌더링할 경우 대화형 세션에 지연이 발생한다.사용자 입력과 표시되는 동작 사이의 지연은 병렬로 렌더링되는 순차 프레임 수에 비례한다.
픽셀 분포
화면 공간의 픽셀 세트는 흔히 정렬 첫 번째 렌더링이라고 불리는 처리 장치 사이에 분배될 수 있다.[2]
픽셀의 레이싱 간 라인을 분산시키면 로드 밸런싱은 좋지만 데이터 확장이 불가능해진다.연속적인 픽셀 2D 타일을 배포하면 뷰가 좌절된 상태에서 데이터를 도려냄으로써 데이터 확장이 가능하다.단, 좌표 경계에 있는 객체의 데이터 오버헤드가 복제되고 뷰 포인트가 변경됨에 따라 데이터를 동적으로 로드해야 한다.성능 확장을 유지하려면 동적 로드 밸런싱도 필요하다.
객체 분포
처리 장치 간에 객체를 배포하는 것을 흔히 마지막 렌더링 정렬이라고 한다.[3]데이터 스케일링도 좋고 성능 스케일링도 좋지만 처리 노드에서 나오는 중간 영상을 알파 합성해 최종 이미지를 만들어야 한다.이미지 해상도가 커짐에 따라 알파 합성 오버헤드도 커진다.
또한 시야 조건에 관계없이 성능을 유지하기 위한 부하 분산 체계가 필요하다.이는 객체 공간을 과도하게 분할하고 각 처리 장치에 임의의 방식으로 여러 조각을 할당함으로써 달성될 수 있지만, 이는 최종 이미지를 만드는 데 필요한 알파 합성 단계 수를 증가시킨다.또 다른 옵션은 연속 블록을 각 처리 장치에 할당하고 동적으로 업데이트하는 것이지만, 여기에는 동적 데이터 로딩이 필요하다.
잡종 분포
다양한 분포 유형은 여러 가지 패션으로 결합될 수 있다.두 개의 순차 프레임을 병렬로 렌더링하는 동시에 픽셀 또는 객체 분포를 사용하여 각각의 개별 프레임을 병렬로 렌더링할 수 있다.개체 분포는 알파 합성 비용을 줄이기 위해 화면 공간의 중첩을 최소화하거나 픽셀 분포를 사용하여 개체 공간의 일부를 렌더링할 수 있다.
오픈 소스 애플리케이션
오픈소스 소프트웨어 패키지 크롬은 기존 어플리케이션에 병렬 렌더링 메커니즘을 제공한다.그것은 OpenGL 호출을 가로채서 처리하는데, 일반적으로 디스플레이 벽을 구동하는 여러 렌더링 장치로 보낸다.
이퀄라이저는 멀티파이프 애플리케이션을 위한 오픈 소스 렌더링 프레임워크 및 리소스 관리 시스템이다.Equalizer는 리소스 서버에 의해 런타임에 구성된 병렬 확장형 시각화 응용프로그램을 쓰기 위한 API를 제공한다.[4]
OpenSG는 특히 클러스터에서 병렬 렌더링 기능을 제공하는 오픈 소스 장면그래프 시스템이다.다중 스레드 및 클러스터링된 병렬 애플리케이션의 복잡성을 숨기고 정렬 우선 및 정렬 마지막 렌더링을 지원한다.[5]
골렘은 병렬 컴퓨팅에 사용되는 오픈소스 분산형 애플리케이션으로 현재 블렌더에서 렌더링과 함께 작동하고 있으며, 더 많은 용도를 통합할 계획이다.[6]
참고 항목
- 개념
- 구현
참조
- ^ Wu, C.; Yang, B.; Zhu, W.; Zhang, Y. (2017). "Toward High Mobile GPU Performance through Collaborative Workload Offloading". IEEE Transactions on Parallel and Distributed Systems. PP (99): 435–449. doi:10.1109/tpds.2017.2754482. ISSN 1045-9219.
- ^ 몰나르, S, M. 콕스, D.엘즈워스, 그리고 H.Fuchs. "평행 렌더링의 정렬 분류"IEEE 컴퓨터 그래픽 및 알고리즘, 1994년 7월 23-32페이지.
- ^ 몰나르, S, M. 콕스, D.엘즈워스, 그리고 H.Fuchs. "평행 렌더링의 정렬 분류"IEEE 컴퓨터 그래픽 및 알고리즘, 1994년 7월 23-32페이지.
- ^ "Archived copy". Archived from the original on 2008-05-11. Retrieved 2020-04-30.
{{cite web}}
: CS1 maint: 타이틀로 보관된 사본(링크) - ^ "Archived copy". Archived from the original on 2017-08-06. Retrieved 2020-04-30.
{{cite web}}
: CS1 maint: 타이틀로 보관된 사본(링크) - ^ "Golem Network". golem.network. Retrieved 2021-05-16.