정점과 픽셀 셰이더는 무엇입니까?
-
07-07-2019 - |
문제
정점과 픽셀 셰이더는 무엇입니까?
그들의 차이점은 무엇입니까? 어느 것이 최고입니까?
해결책
ㅏ 픽셀 셰이더 픽셀별로 작동하도록 프로그래밍하고 조명 및 범프 매핑과 같은 물건을 처리 할 수있는 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 호출과 마찬가지로 수행 할 수 있습니다.
개발 측면에서 픽셀 셰이더는 각 픽셀에서 개별적으로 작동하는 작은 프로그램이며, 마찬가지로 정점 셰이더는 각 정점에서 개별적으로 작동합니다.
특수 효과, 그림자, 조명 등을 만드는 데 사용될 수 있습니다 ...
각 픽셀/정점은 개별적으로 작동되므로 셰이더 최신 그래픽 프로세서의 매우 평행 아키텍처에 적합합니다.