Cg?를 사용하여 단편 (픽셀) 쉐이더에서 픽셀 좌표를 수정할 수 있습니까? 이러한 기능이 2 세대/3 세대 쉐이더에서 사용 가능할 것이라고 확신하지만, 어떤 프로파일을 정확히, 또는 어떻게 수행해야할지 모르겠습니다.Cg 조각 쉐이더에서 픽셀 위치를 수정/대체하는 방법은 무엇입니까?
1
A
답변
1
아니요, 불가능합니다.
프래그먼트 셰이더에서 수정할 수있는 유일한 좌표는 Z이며, Z 버퍼로 이동합니다. 또한 계층 적 Z와 같은 몇 가지 최적화를 무효화하므로 성능에 영향을 미칩니다.
프래그먼트 셰이더가 실행되기 전에 X 및 Y 위치가 설정됩니다 (Rasterizer). 일반적인 래스터 라이저는 사실 최소한 2x2 픽셀의 청크를 생성하며 하드웨어는 블렌딩 단계까지 픽셀을 개별적으로 처리하지 않습니다.
이러한 유형의 기능을 모방하기 위해하는 경향이있는 사람들은 필요 이상으로 많은 픽셀을 생성하고 외부 픽셀을 삭제하는 경향이 있습니다.
들었던 기능은 비록 테셀레이션 일 수 있습니다. 조각 쉐이더의 일부로 수행되지는 않지만 추가 지오메트리를 생성 할 수있는 별도의 파이프 라인 부분입니다.
궁극적으로 사용할 수있는 기술은 달성하려는 목표에 따라 다릅니다. 그러나 하드웨어가 그것을 할 수 없기 때문에 X와 Y의 담요 수정은 Cg, OpenGL, DirectX 등 다양한 API에 의해 지원되지 못했습니다.
1
실시간으로 비트 맵의 실제 픽셀을 수정할 수는 없지만 U/V 좌표 매핑을 대체하여 각 픽셀이 매핑되는 지점을 변경할 수 있습니다.
빨강 및 녹색 그라데이션으로 UV 매핑을 상상해보십시오. 빨간색은 X 위치 매핑을 나타내고 녹색은 Y 위치 매핑을 나타냅니다. 예를 들어, 퍼널 노이즈 (parlin noise)로 좌표를 곱하면 맵핑이 오프셋되고 따라서 픽셀도 상쇄됩니다.
관련 문제
- 1. 조각 쉐이더에서 생성 된 픽셀/조각 목록을 얻는 방법은 무엇입니까?
- 2. Cg 쉐이더에서 구형 텍스처링하기
- 3. OpenGL 및 Cg 쉐이더에서 3d 텍스처를 사용하는 방법은 무엇입니까?
- 4. 조각 쉐이더에서 glLight (화면 위치)
- 5. Cg 버텍스 쉐이더에서 GlProgram 바이너리 가져 오기
- 6. Cg 쉐이더에서 struct 파라미터를 가져 오는 것
- 7. 단일체 cg 쉐이더에서 sizeof float 사용하기
- 8. CPU에서 Cg 버텍스/조각 쉐이더를 실행하는 방법은 무엇입니까?
- 9. 픽셀 쉐이더에서 월드 공간 좌표 계산하기
- 10. HLSL 버텍스 쉐이더에서 픽셀 쉐이더로 배열 전달
- 11. 조각 쉐이더에서 GLSL 원자 카운터 (및 분기)
- 12. WebGL 조각 쉐이더에서 이상한 부동 소수점 연산
- 13. Maya Cg 쉐이더에서 Photoshop psd 파일이 손실 됨
- 14. 픽셀 쉐이더에서 텍스처를 설정하고 렌더 타겟으로 만드시겠습니까?
- 15. HLSL 픽셀 쉐이더에서 렌더링 타겟으로 Texture2D 배열
- 16. 포인터의 픽셀 위치를 얻으십시오
- 17. 쉐이더에서 왜곡 된 픽셀 값을받는 WebGL 렌더링 버퍼
- 18. 텍스트 상자의 커서 위치를 픽셀 값으로 가져 오는 방법은 무엇입니까?
- 19. OpenGL에서의 Cg 문제점
- 20. jQuery를 : 정수 형식으로 요소의 픽셀 위치를 얻기
- 21. Cg 쉐이더 쌓기
- 22. 여러 텍스처를 샘플링하고 동일한 픽셀 쉐이더에서 여러 텍스처로 렌더링
- 23. iPhone4 CG 그림 스케일이 시뮬레이터와 동일하지 않습니다.
- 24. CG 래스터 데이터 란 무엇입니까?
- 25. 조각 내에서 이동하는 방법은 무엇입니까?
- 26. GLSL은 버텍스 쉐이더에서 좌표
- 27. div의 픽셀 크기와 픽셀 위치를 백분율로 변환 하시겠습니까?
- 28. PS_2_0 쉐이더에서 VFACE 시맨틱을 에뮬레이트
- 29. directx 쉐이더에서 방향성 조명 설정
- 30. WPF 어떻게 Image.Source (BitmapSource) 픽셀 위치를 보여?
좋아요. 그래서 어떻게 CG로 z를 수정합니까? Displacement는 내가 생각하기에 올바른 용어입니다 ... 어떻게 z 위치를 통과시키고 변경합니까? –
DEPTH 의미론을 통해 Z를 변경할 수 있습니다 (float 형식). "[,,,] 기본값은 래스터 라이저에서 얻은 보간 깊이이며, 의미 상으로이 기본값은 프래그먼트 프로그램의 실행 초기에 출력에 복사됩니다." – Bahbar