문제

정점과 픽셀 셰이더는 무엇입니까?

그들의 차이점은 무엇입니까? 어느 것이 최고입니까?

도움이 되었습니까?

해결책

픽셀 셰이더 픽셀별로 작동하도록 프로그래밍하고 조명 및 범프 매핑과 같은 물건을 처리 할 수있는 GPU (그래픽 처리 장치) 구성 요소입니다.

정점 셰이더 또한 GPU 구성 요소이며 픽셀 셰이더와 같은 특정 어셈블리와 유사한 언어를 사용하여 프로그래밍되지만 장면 형상을 지향하며 만화 실루엣 가장자리를 물체에 추가하는 것과 같은 작업을 수행 할 수 있습니다.

다른 것보다 낫지는 않지만 각각의 특정 용도를 가지고 있습니다. Directx 9 이상을 지원하는 대부분의 최신 그래픽 카드에는 이러한 기능이 포함됩니다.

웹에는 이러한 것들을 사용하는 방법을 더 잘 이해하기위한 여러 리소스가 있습니다. NVIDIA와 ATI는 특히이 주제에 대한 문서를위한 좋은 리소스입니다.

다른 팁

DirectX 10 및 OpenGL 3은 지오메트리 셰이더를 세 번째 유형으로 도입했습니다.

렌더링 파이프 라인 순서에서 -

정점 셰이더 - 단일 지점을 가져 와서 조정할 수 있습니다. 다음 단계의 설정으로 복잡한 ** 정점 조명 계산을 운동하는 데 사용할 수 있습니다.

각각의 원시적 원시는 다음으로 전달됩니다

기하학적 셰이더 - 변형 된 각 원시 (삼각형 등)를 가져 와서 계산을 수행 할 수 있습니다. 이렇게하면 새로운 포인트를 추가하거나 필요에 따라 이동하거나 이동할 수 있습니다. 이것은 단일베이스 메쉬에서 동적으로 세부 수준을 추가 또는 제거하는 데 사용될 수 있으며, 점 (복잡한 입자 시스템) 및 기타 유사한 작업을 기반으로 수학 메시를 만듭니다.

결과 각각의 원시는 스캔 라인이 변환되고 각 픽셀 스팬 커버는

픽셀 셰이더 (OpenGL의 Fragment Shader) - 정점 셰이더가 통과하는 내용, 묶인 텍스처 및 사용자 지원 데이터를 기반으로 화면의 픽셀 색상을 계산합니다. 이것은 현재 화면을 전혀 읽을 수 없으며, 현재 원시를 위해 픽셀이 어떤 색상/투명성을 해야하는지 알아보십시오.

그런 다음 해당 픽셀은 현재 드로우 버퍼 (스크린, 백 버퍼, 렌더-텍스처 등을 입력하게됩니다.

모든 셰이더는 World View 매트릭스와 같은 전역 데이터에 액세스 할 수 있으며 개발자는 조명 또는 기타 목적에 사용할 수 있도록 간단한 변수로 전달할 수 있습니다. 셰이더는 어셈블러와 같은 언어로 처리되지만 최신 DirectX 및 OpenGL 버전은 각각 HLSL 및 GLSL이라는 고급 C 유사 언어 컴파일러로 내장되어 있습니다. NVIDIA에는 API에서 모두 작동하는 CG라는 셰이더 컴파일러가 있습니다.

주석에 언급 된대로 이전에 가지고 있던 잘못된 순서 (Geometry-> vertex-> pixel)를 반영하도록 편집.

이제 Directx 11에는 Tessellation을 위해 사용되는 3 개의 새로운 셰이더가 있습니다. 새로운 완전한 셰이더 순서는 vertex-> hull-> tessellation-> domain-> geometry-> pixel입니다. 나는 아직이 새로운 것을 사용하지 않았으므로 정확하게 설명 할 자격이 없다고 생각합니다.

정점 및 픽셀 셰이더는 그래픽 파이프 라인 내에서 다른 기능을 제공합니다. 정점 셰이더는 정점 관련 데이터 (위치, 정상, Texcoords)를 취하고 처리합니다.

픽셀 (또는 더 정확하게, 조각) 셰이더는 정점 셰이더에서 처리 된 것들로부터 보간 된 값을 취하고 픽셀 조각을 생성합니다. 대부분의 "멋진"물건은 픽셀 셰이더로 수행됩니다. 텍스처 조회 및 조명과 같은 일이 발생합니다.

Directx 특정 :

셰이더 :

고정 렌더링 파이프 라인에 정의되지 않은 객체에 그래픽 기능을 추가하는 프로그램 세트. 이로 인해 우리는 필요에 따라 자체 그래픽 효과를 가질 수 있습니다. 즉, 우리는 더 이상 사전 정의 된 "고정 된"작업에만 국한되지 않습니다.

HLSL : (고급 음영 언어) :

HLSL은 셰이더 (픽셀 셰이더 / 정점 셰이더)를 구현하는 데 사용되는 C ++와 같은 프로그래밍 언어입니다.

정점 셰이더 :

정점 셰이더는 각 정점에서 개별적으로 작동하는 그래픽 카드의 GPU에서 실행 된 프로그램입니다. 이것은 우리가 정점과 함께 작동하기 위해 우리 자신의 사용자 정의 알고리즘을 작성할 수 있습니다.

픽셀 셰이더 :

픽셀 셰이더는 각 픽셀의 래스터 화 프로세스 중에 그래픽 카드의 GPU에서 실행되는 프로그램입니다. 그것은 우리에게 개별 픽셀에 직접 액세스/조작 할 수있는 시설을 제공합니다. 이 픽셀에 직접 액세스하면 픽셀 조명 당 멀티 텍스트 링, 필드 심도, 클라우드 시뮬레이션, 화재 시뮬레이션 및 정교한 그림자 기술과 같은 다양한 특수 효과를 얻을 수 있습니다.

메모: 정점 셰이더와 픽셀 셰이더 (프로그램)는 사용하기 전에 특정 버전의 컴파일러를 사용하여 컴파일해야합니다. 컴파일은 파일 이름, 기본 항목 함수 등과 같은 필요한 매개 변수를 가진 API 호출과 마찬가지로 수행 할 수 있습니다.

개발 측면에서 픽셀 셰이더는 각 픽셀에서 개별적으로 작동하는 작은 프로그램이며, 마찬가지로 정점 셰이더는 각 정점에서 개별적으로 작동합니다.

특수 효과, 그림자, 조명 등을 만드는 데 사용될 수 있습니다 ...

각 픽셀/정점은 개별적으로 작동되므로 셰이더 최신 그래픽 프로세서의 매우 평행 아키텍처에 적합합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top