오늘날 하드웨어 렌더링보다 소프트웨어 렌더링을 사용하는 이유는 무엇입니까?


13

CPU 또는 소프트웨어 렌더링과 달리 가정합니까?

OpenGL 또는 Direct X를 사용하는 것처럼 보면 현재의 모든 렌더링이 GPU 기반이 아닐까요?

누군가 여기에 정보를 줄 수 있습니까? 적합한 답변을 찾을 수 없습니까?

답변:


7

GPU 렌더링이 무엇인지 분명히 이미 알고 있듯이 ... 내가 원하는 것의 대답을 알려 드리겠습니다.

전통적으로 하드웨어 렌더링은 매우 복잡하다는 오해를 불러 일으켰습니다. 이것은 복잡한 부분을 숨기는 데 잘 맞지 않는 API (application programming interface)의 디자인 때문입니다. 즉, 학습 곡선이 가파른 것입니다. 또한 API가 많이 사용되는 3D 응용 프로그램 작성이 2D 응용 프로그램 작성보다 훨씬 더 복잡하다는 사실에 대한 이해로 부분적으로 이어졌습니다. 인터페이스 복잡성, OpenGL 및 DirectX와 같은 인터페이스를 참조하고 있습니다. Re 3D vs 2D, 나는 3D 장면을 구성하는 수학과 기하학, 그리고 훈련되지 않은 마음이 2D 문제에 접근 할 수있는 단순성을 언급하고 있습니다.

그러나 최근에는 학습 자료가 훨씬 더 유용 해졌을뿐만 아니라 이러한 인터페이스의 기본 복잡성을 감싸는 많은 라이브러리가 사용 가능해졌으며 진입 장벽이 낮아졌습니다. 이 모든 것이 시각화, 매끄러운 사용자 인터페이스 및 저전력 장치의 성능의 중요성이 높아짐에 따라 이미 증가하고있는 관심의 주기로 되돌아 왔습니다.

따라서 소프트웨어 렌더링 및 2D 렌더링은 그래픽을 처음 사용하거나 프로젝트에서 사용 가능한 시간을 너무 많이 사용하지 않는 제품을 만들려는 사람들에게 좋은 진입 점이자 초점 영역이었습니다. 적어도 2D와 관련하여 이것은 여전히 ​​적용됩니다. 기술은 2D 렌더링을 GPU로 가져 오는 격차를 크게 극복했습니다.


20

여기에 정말 좋은 답변이 있으므로 보충하십시오.

소프트웨어 렌더링의 주요 원동력은 기능입니다. 이것은 대답 중 하나에서 다루어졌지만 반대 의견을 제시 할 것입니다. 소프트웨어 렌더링은 실제로 하드웨어 렌더링 보다 성능이 우수 할 수 있습니다 .

하드웨어를 사용하면 일반적으로 하드웨어 자체의 기능으로 제한되지만 OpenGL은 하드웨어에 존재하지 않는 많은 것들을 소프트웨어 에뮬레이션 할 수 있습니다. 즉, Feature X를 사용하려고하지만 하드웨어가이를 지원하지 않는 경우 다음 두 가지 중 하나가 발생합니다. 소프트웨어 에뮬레이션으로 돌아가거나 (일반적인 OpenGL 시나리오) 전혀 사용하지 마십시오 (일반적인 D3D 시나리오).

소프트웨어 렌더링을 사용하면 코드를 직접 작성할 수 있습니다. 사물을 조작하고 픽셀 수준까지 일어나는 일을 완전히 제어 할 수 있습니다. 과거의 폭발 사례를 보여주기 위해 Quake는 1996 년 3D 카드 ( "GPU"라고 불림)가 수십 개의 질감 삼각형을 거의 래스터화할 수 없었던 당시 소프트웨어에서 픽셀 쉐이더를 구현했습니다.

현재 GPU에서도 더 그렇습니다.하지만 그래픽 파이프 라인에는 여전히 고정 기능으로 노출되거나 전혀 노출되지 않는 중요한 부분이 있습니다.

소프트웨어 렌더링이 더 잘 확장 될 수 있습니다. 최근에는 멀티 GPU 설정이 실제로 실행되는 것을 보았지만 소프트웨어는 많은 서버의 많은 CPU 코어에서 확장 될 수 있습니다. 전체 서버 팜을 전용으로 사용할 수 있으며 전문 렌더 팜은 여전히 ​​소프트웨어 렌더링을 사용합니다.

소프트웨어는 다른 렌더링 패러다임을 노출시킬 수 있습니다. 현재 하드웨어는 삼각형 / 정점 / 단편 / 래스터 화 패러다임에 중점을두고 있습니다. 한 가지를 고르고 자비를 외칠 때까지 최적화하는 경우입니다. GPU는 여전히 레이트 레이싱에 적합하지 않습니다. 예를 들어 소프트웨어에서 더 일반적으로 구현됩니다.

물론 직접적인 사과 대 사과 비교와 관련하여 GPU가 더 강력한 영역을 비교하고 있다면 GPU는 소프트웨어를 매주 어느 때보 다 능가합니다. 그러나 그것이 모든 영역에서 더 강하다고 말하는 것은 아닙니다. 그럼에도 불구하고,이 SE 사이트의 목적 상, 하드웨어를 사용하는 것이 일반적으로가는 방법이지만 소프트웨어가 실행 가능한 경우도 있습니다.


8
"소프트웨어 렌더링은 실제로 하드웨어 렌더링보다 성능이 우수 할 수 있습니다."
concept3d

10

하드웨어 또는 GPU 렌더링 은 그래픽 처리 장치 (일명 비디오 카드)를 사용하여 이미지를 렌더링하는 것으로 추측됩니다. 반대는 CPU가 사용되는 소프트웨어 렌더링 입니다.

소프트웨어 렌더링은 일반적으로 사용 가능한 (적합한) GPU가 없을 때 폴백으로 사용됩니다. 그러나 GPU는 수십 배 더 빠르기 때문에 CPU는 일반적으로 실시간으로 이미지를 렌더링 할 수 없으므로 소프트웨어 렌더링이 거의 유용하지 않습니다. 소프트웨어 렌더링은 이미지를 렌더링하기 위해 매우 복잡한 수식이 필요한 경우 높은 정밀도가 필요할 때 유용합니다. CPU는 GPU보다 범용이므로 더 많은 기능을 제공합니다. 그러나 오늘날 GPU가 점점 더 복잡한 작업을 처리 할 수 ​​있고 더 이상 숫자를 나타 내기 위해 32 비트 부동 소수점으로 제한되지 않기 때문에이 주장은 점점 덜 유효 해지고 있습니다.


2

나는 이것이 정말로 좋은 질문이라고 생각합니다.

내가 상상할 수있는 것은 :

  • VRAM은 일반 RAM 메모리보다 제한적입니다. GPU 렌더링의 경우 모든 텍스처가 더 문제가됩니다. VRAM보다 RAM에 평균 약 4 ~ 8 배 더 많은 데이터를 저장할 수 있습니다. 물론이 시나리오는 사용되지 않거나 필요한 텍스처를 RAM / VRAM에서 해제 / 밀어 넣는 시스템이 없다고 가정합니다.

  • 멀티 스레딩의 관점에서 소프트웨어 렌더링 작업을 할 때 훨씬 쉽습니다. 컨텍스트를 공유 할 필요가 없습니다

  • 2D 그래픽을 수행하는 경우 (대개 대부분의 프레임 워크는 Dirty Rectangles Evaluation을 구현) 많은 성능 문제를 해결합니다.

여전히 OGL / D3D를 사용한 렌더링은 훨씬 더 많은 성능과 가능성을 제공합니다. 셰이더는 소프트웨어 렌더링으로는 거의 불가능한 놀라운 작업을 수행 할 수 있습니다.

그러나 컬러 키를 사용한 블리 팅과 같은 테크니크는 컴퓨터 그래픽 세계의 원천 인 것처럼 자신 만의 느낌을 가지고 있습니다.

적어도 소프트웨어 렌더링에 대해 아는 것이 좋다고 생각합니다. 오늘날 우리가 보는 모든 것의 근원이라는 것은 말할 것도없이 정말 흥미 진진한 세상입니다.


1
셰이더를 실행하기 위해 하드웨어 가속이 필요하지 않습니다. OS X 10.9는 GL4의 완벽한 소프트웨어 구현 기능을 제공합니다. 소프트웨어 렌더링에는 성능이 매우 뛰어납니다. 정교한 게임을 현실적으로 할 수있는 시점은 아니지만 (애플이 제품에 제공하는 GPU도 공평하지는 않지만) Direct3D 참조 래스터 라이저와 같은 것을 사용하는 것보다 훨씬 실용적입니다. 실제로 작동하는 소프트웨어를 사용하여 배송 할 수 있습니다.
Andon M. Coleman

@ AndonM.Coleman 모든 사람이 Apple을 사용하는 것은 아니며 Linux 및 Windows에서 셰이더를 지원하는 소프트웨어 렌더러를 모른다.
luke1985

1
그건 내 요점이 아니었다. 완전한 기능의 쉐이더가 CPU에서 완전히 실행되는 OpenGL의 구현이 있습니다. Apple이 개발자라는 사실은 크게 관련이 없습니다. 귀하의 답변은 OpenGL에서 최신 셰이더를 실행하기 위해 GPU가 필요하다고 생각했다는 인상을주었습니다.
Andon M. Coleman

@ AndonM.Coleman 그리고 그것은 거의 정확합니다. 왜냐하면 80 %의 경우 당신이해야하기 때문입니다.
luke1985

2
소프트웨어 렌더링을 통해 셰이더를 쉽게 구현할 수 있습니다. 실제로 Tomb Raider 1 및 Quake 1에서도 픽셀 쉐이더가있었습니다. 정반대입니다. CPU는 현재 GPU의 제한 정점 / 조각 파이프 라인보다 더 많은 제어 기능을 제공합니다.
lama12345
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.