KR100965636B1 - 프로그래밍 가능한 오프셋 위치들을 이용하여 텍스쳐샘플들을 처리하기 위한 방법 및 시스템 - Google Patents
프로그래밍 가능한 오프셋 위치들을 이용하여 텍스쳐샘플들을 처리하기 위한 방법 및 시스템 Download PDFInfo
- Publication number
- KR100965636B1 KR100965636B1 KR1020080050367A KR20080050367A KR100965636B1 KR 100965636 B1 KR100965636 B1 KR 100965636B1 KR 1020080050367 A KR1020080050367 A KR 1020080050367A KR 20080050367 A KR20080050367 A KR 20080050367A KR 100965636 B1 KR100965636 B1 KR 100965636B1
- Authority
- KR
- South Korea
- Prior art keywords
- texture
- texel
- predetermined
- offset
- predetermined texel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
사용자-지정 오프셋 위치들을 이용하여 텍스쳐 동작을 수행하기 위한 방법 및 시스템이 개시된다. 특히, 본 발명의 일 실시예는, 텍스쳐 맵 내에 투영된 픽셀과 관련된 원래의 샘플 위치 및 사용자에 의해 지정된 제1 오프셋 위치에 기초하여 제1 예정 텍셀(texel) 위치를 도출하는 단계, 및 텍스쳐 동작에 대한 제1 예정 텍셀 위치에서의 텍셀 속성을 페치(fetch)하는 단계를 포함하는 방법이 개시된다.
텍스쳐 맵, 텍셀, 바이리니어, 오프셋 위치, 텍스쳐 동작, 필터링 동작
Description
본 발명은 일반적으로 컴퓨터 그래픽에 관한 것이며, 더 구체적으로는 프로그래밍 가능한 오프셋 위치들을 이용하여 텍스쳐 샘플들을 처리하기 위한 방법 및 시스템에 관한 것이다.
본 명세서에 달리 나타내지 않는 한, 이 부분에서 설명된 방식들은 본 출원의 특허청구범위에 대한 종래 기술에 해당하지 않으며, 본 절에 포함된다고 하여 종래 기술인 것으로 인정되는 것은 아니다.
에일리어싱 현상(aliasing artifacts)을 다루기 위한 통상의 텍스쳐 필터링 방식은 텍스쳐 공간으로 매핑된 픽셀 중심을 둘러싸는 상이한 축들을 따라 동일한 수의 텍셀(texel)들을 액세스하고 필터링하는 것을 포함한다. 그러한 방식은 통상적으로 바이리니어(bilinear) 필터 또는 트라이리니어(trilinear) 필터를 이용한다. 예시로서, 도 1a는, 종래 기술의 2×2 필터 커널(kernel)이 픽셀 중심(102)을 둘러싸는 4개의 인접한 텍셀들(104, 106, 108 및 110)을 단일 클록 사이클에서 액 세스하고, 그 후 그 텍셀들을 바이리니어 필터링하는 텍스쳐 맵(100)이다.
그러나, 일부 텍스쳐링 어플리케이션들은 텍셀들을 다르게 필터링한다. 일례로는 텍스쳐 기반 쉐도우 매핑이 있고, 다른 예로는 HDR(highly dynamic range) 렌더링이 있다. 쉐도우 매핑은 컴퓨터 생성 화면에서 사실감을 증대시키기 위한 쉐도우 랜더링 기법이다. 더 구체적으로, 쉐도우 매핑 처리 중에, 화면은 광의 시점으로부터 먼저 렌더링되어, 통상 쉐도우 맵이라고 불리는 특별한 텍스쳐 맵을 생성하고, 그 안에 쉐도우 맵 내의 각각의 텍셀은 가시면(visible surface)과 연관된 깊이 값(depth value)을 저장한다. 그 후, 화면의 보기(view)는 관찰자의 시점으로부터 렌더링되고, 그에 의해 화면 공간 내의 (x, y) 위치에서의 픽셀은 광-공간 좌표 내로 투영되고, 그 후 가시성이 테스트된다. 이 테스트는 픽셀의 깊이 값을, 깊이 맵 내의 대응하는 위치에 저장된 깊이 값과 비교하여 픽셀이 물체 뒤에 있는지 여부를 판정한다. 비교 결과에 기초하여, 픽셀은 쉐도우 또는 라이팅 상태로 된다. 눈에 보기 좋게 부드러운 쉐도우들을 렌더링하기 위해, 쉐도우 맵으로부터 픽셀당 4개 이상의 텍셀들이 샘플링될 필요가 있고, 이들 텍셀들은 대개는 서로 인접하여 존재하지 않는다.
HDR 렌더링 기법에 있어서, 이는 현저한 콘트라스트 차이를 갖는 화면에서 세부 사항을 유지하기 위한 기법이다. 즉, 화면 내에 어두운 영역과 밝은 영역이 모두 존재한다면, 이 영역들 모두는 상기 기법을 이용하여 정확하게 나타내어질 수 있다. 전술한 쉐도우 매핑 기법과 마찬가지로, HDR 렌더링 기법은 또한 픽셀당 4개보다 많은 텍셀들을 샘플링할 수 있다. 이들 텍셀들은 일반적으로 도 1b에 도시 된 텍셀들(124, 126, 128 및 130)과 같이, 2×2 영역보다 더 희박하게 분포된다.
전술한 쉐도우 매핑 및 HDR 렌더링 동작들에서 2×2 필터 커널에 의한 종래 기술을 이용하는 것은 몇몇 결점들을 갖는다. 우선, 2×2 필터 커널은 클록 사이클당 희박하게 분포된 텍셀들 중 하나에만 액세스하는 것이 가능할 수 있다. 따라서, 원하는 텍셀들 모두에 액세스하기 위해서는, 다수의 클록 사이클이 필요하게 된다. 설명을 위해, 텍스쳐링 어플리케이션이 텍셀들(124, 126, 128 및 130)에 액세스할 필요가 있고, 종래 기술의 2×2 필터 커널이 사용되는 것으로 가정한다. 2×2 필터 커널의 크기가 4개의 원하는 텍셀들 모두를 동시에 커버할 만큼 크지 않고, 예컨대 텍셀(124)와 같이, 4개의 텍셀들 중 하나를 커버할 수 있기 때문에, 필터 커널에 대해 이용가능한 텍스쳐 액세스 대역폭의 3/4은 사용되지 않는다. 픽셀당 4개보다 많은 텍셀들(예컨대, 16 텍셀)에 액세스할 필요가 있는 텍스쳐링 어플리케이션에 대하여는, 2×2 필터 커널의 비효률성이 더욱 현저할 것이다. 다음으로, 종래 기술의 2×2 필터 커널은 샘플링된 텍셀들을 바이리니어하게 가중하는데, 이는 전술한 쉐도우 매핑 및 HDR 렌더링 동작들을 포함하는 텍스쳐링 어플리케이션들과 같은 소정의 텍스쳐링 어플리케이션들에 대하여는 최적이 아닐 수 있다.
따라서, 전술한 바와 같이, 본 기술 분야에서 요구되는 것은, 지정된 텍셀들을 효율적이고 유연하게 샘플링하고 적어도 전술한 문제점들을 해결할 수 있는 텍스쳐 필터링 기법이다.
사용자-지정 오프셋 위치들을 이용하여 텍스쳐 동작을 수행하기 위한 방법 및 시스템이 개시된다. 특히, 본 발명의 일 실시예는, 텍스쳐 맵에 투영된 픽셀과 연관된 원래의 샘플 위치 및 사용자에 의해 지정된 제1 오프셋 위치에 기초하여 제1 예정 텍셀 위치를 유도하는 단계, 및 텍스쳐 동작을 위해 제1 예정 텍셀 위치에서의 텍셀 속성들을 페치하는 단계를 포함하는 방법을 설명한다.
본 명세서에서 개시된 본 발명의 적어도 하나의 이점은 사용자-지정 오프셋 위치에 의해 결정되는 위치들에서 텍스쳐 샘플들에 대해 작용하여, 텍스쳐 동작들이 유연하게 구현되고 효율적으로 수행되는 능력이다.
본 명세서 전체에서, "사용자"라는 용어는 사용자, 또는 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 프로그램의 개발자를 광범위하게 언급하는 것이다. 또한, "사용-지정(user-specified)" 및 "프로그램가능한(programmable)"이라는 용어는 사용자에 의해 지정 또는 변경될 수 있는 텍스쳐 샘플 위치 또는 텍스쳐 샘플 오프셋 위치에 권한을 부여하기 위해 상호 교환 가능하게 사용될 수 있다. 텍스쳐 샘플은 통상적으로 텍셀로서 언급된다. 또한, 본 명세서에서 언급된 "컴퓨터 판독가능한 매체"의 일부 예들은, 비휘발성 매체(예컨대, 광 디스크 또는 자기 디스크) 및 휘발성 매체(예컨대, 동적 메모리)를 제한 없이 포함한다.
도 2a는 본 발명의 하나 이상의 양태를 구현하도록 구성된 컴퓨팅 디바이 스(200)의 개념도이다. 컴퓨팅 디바이스(200)는 중앙 처리 유닛(CPU)(202), 시스템 인터페이스(204), 시스템 메모리(210), 그래픽 처리 유닛(GPU)(250), GPU 로컬 메모리(260), 및 디스플레이(270)를 포함한다. CPU(202)는 시스템 메모리(210) 및 시스템 인터페이스(204)에 접속한다. CPU(202)는 시스템 메모리(210)에 저장된 프로그래밍 명령들을 실행하고, 시스템 메모리(210)에 저장된 데이터를 동작시키며, 시스템 인터페이스(204)를 통해 GPU(250)와 통신한다. 대안의 실시예들에서, CPU(202), GPU(250), 시스템 인터페이스(204), 또는 그 임의의 조합이 단일의 처리 유닛에 통합될 수 있다. 또한, GPU(250)의 기능성은 칩셋이나 일부 다른 타입의 특수 목적의 처리 유닛 또는 코-프로세서(co-processor)에 포함될 수 있다. 시스템 메모리(210)는 통상적으로 (도시한 바와 같은) CPU(202)에 직접 접속되거나, 또는 대안으로 시스템 인터페이스(204)를 통해 접속되도록 구성된 동적 랜덤 액세스 메모리(DRAM)를 포함한다. GPU(250)는 CPU(202)에 의해 송신된 명령들을 수신하고, 그 명령들을 처리하여 GPU 로컬 메모리(260)에 저장된 그래픽 데이터 및 이미지들을 디스플레이(270) 상에 렌더링한다. 디스플레이(270)는 입력된 데이터 신호에 대응하는 비주얼 이미지를 내보낼 수 있는 출력 장치이다.
시스템 메모리(210)는 어플리케이션 프로그램(212), 하이-레벨 쉐이더 프로그램들(214), 어플리케이션 프로그래밍 인터페이스(API)(216), 및 GPU 드라이버(218)를 포함한다. 어플리케이션 프로그램(212)은 하나 이상의 하이-레벨 쉐이더 프로그램(214)의 인스턴스(instance)를 호출할 수 있다. 하이-레벨 쉐이더 프로그램들은 통상적으로 GPU(250) 내의 하나 이상의 프로세싱 엔진을 동작시키도록 설계된 하이-레벨 프로그래밍 명령들의 소스 코드 텍스트를 포함한다. 하이-레벨 쉐이더 프로그램들(214)은, GPU 드라이버(218)에 포함된 컴파일러 또는 어셈블러에 의해, 또는 대안으로 컴퓨터 장치(200)나 그 밖의 컴퓨터 장치들을 동작시키는 오프라인 컴파일러 또는 어셈블러에 의해, 실행가능한 쉐이더 프로그램들(262) 등의 실행가능 프로그램 오브젝트들로 변형될 수 있다.
실행가능한 쉐이더 프로그램(262), 텍스쳐 버퍼(266), 및 프레임 버퍼(268) 모두 GPU 로컬 메모리(260)에 존재한다. 실행가능한 쉐이더 프로그램(262)은, GPU(250)의 픽셀 쉐이더 엔진(254)에 의해 실행되는 경우, 렌더링 파이프라인(252)의 상이한 컴포넌트들에 명령들을 발행한다. 텍스쳐 버퍼(266)는 통상적으로, 쉐도우 맵들을 포함하는 텍스쳐 맵들을 저장한다. 프레임 버퍼(268)는 디스플레이(270)를 구동하는 데 이용되는 적어도 하나의 2차원적 표면을 포함한다.
렌더링 파이프라인(252)은 텍스쳐 유닛(256)을 더 포함하는, 픽셀 쉐이더 엔진(254)을 포함한다. 텍스쳐 유닛(256)은 텍스쳐 버퍼(266)로부터의 프로그램가능한 오프셋 위치를 이용하여, 요청된 텍셀 속성(texel attribute)을 검색하고, 필터 가중치들을 처리하고, 깊이 비교 동작들 및 텍스쳐 필터링 동작들을 행할 수 있다. 이후의 단락들에는 텍스쳐 유닛(256)의 기능들 및 동작들에 대해 보다 상세히 설명될 것이다.
도 2b는, 본 발명의 일 실시예에 따른, 프로그램가능한 오프셋 위치들을 이용하여 텍스쳐 필터링 동작을 수행하는, 도 2a에 도시된 GPU(250)의 일부분의 개략도이다. 설명을 위해, 텍스쳐 필터링 동작은 도 2c에 도시된 스크린 픽셀 P에 대 해 쉐도우 상태 값 S를 생성하는 것으로 가정한다. 일 실시예에서, 텍스쳐 유닛(256)에 발행되는 쉐이더 프로그램 명령은 출력 인자 S 및 다수의 입력 인자들, 예컨대 P, Offseti, texture[n] 등을 포함한다. 여기서, S는 계산된 쉐도우 결과값에 대한 플레이스홀더(placeholder)를 나타낸다. P는 쉐도우 맵(280)에 투영되는 스크린 픽셀의 텍스쳐 좌표를 나타낸다. Offseti는 쉐도우 맵(280) 내의 프로그램가능한 (ui, vi)쌍을 지칭한다. Texture[n]는 쉐도우 맵(280) 등의, 텍스쳐 버퍼(266)에 저장된 특정 쉐도우 맵에 대응한다.
P, S, Offseti 및 texture[n]를 입력으로서 이용하여, 텍스쳐 유닛(256)은Offseti를 P에 적용함으로써, 예정 텍셀 위치들 D1, D2, D3, 및 D4를 도출한다. 예를 들어, P를 (u0, v0)로 나타내고, Offseti를 (uoffset, voffset)로 나타내면, D1은 (u0+uoffset, v0+voffset) 또는 (u1, v1)이다. 또한, 도 2c에 도시된 바와 같이, P를 원점(origin)으로 하고, (ui, vi)의 각 쌍이 또한 벡터 Vi와 연관되어 있다. 예를 들어, V1은 원점 P 및 Offset1과 연관되어 있다. 또한, 이 구현에서, 4개의 상이한 (u, v) 쌍들은 사용자에 의해 지정되고 서로 대칭이 되도록 요구되지 않는다. 특히, Offset1에서의 u1의 길이는 Offset2, Offset3, 및 Offset4에서의 u 또는 v 중 어느 길이와도 동일하도록 요구되지 않는다. 마찬가지로, Offset1에서의 v1의 길이는 Offst2, Offset3, Offset4에서의 v 또는 u 중 어느 길이와도 동일할 필요가 없다. 따라서, 이들 예정 텍셀 위치들을 커버하는 필터 커널의 크기 및 형태는 임의적일 수 있다. 본 발명의 범주를 초과하지 않고 N개의 오프셋 쌍들을 갖는 N개의 샘플들을 스케일하는 것이 당업자에게는 명백할 것이다.
예정 텍셀 위치들을 이용하여, 텍스쳐 유닛(256)은 텍스쳐 버퍼(266)에 판독 요청을 보내어, D1, D2, D3, 및 D4에서의 적절한 텍셀 속성들, 예컨대 깊이 값(depth value)들 등을 페치(fetch)한다. 다음, 깊이 값들 각각은 깊이 맵 테스트에서의 P와 관련된 깊이 값에 대해 비교가 행해진다. 도 2d는, 깊이 맵 테스트를 텍셀들 D1, D2, D3, 및 D4에 적용하여 얻어지는 하나의 결과 세트를 도시하는 개략도이다. P와 관련된 깊이 값이 D1, D2, D3, 및 D4에 저장된 깊이 값들보다 큰지 아니면 작은지의 여부는 1 또는 0 어느 하나로 표현된다. 최종 쉐도우 상태 값 S를 도출하기 위해, 텍스쳐 유닛(256)은 깊이 맵 테스트의 결과들에 대해 필터 가중치들을 적용한다. 일 실시예에서, 텍스쳐 유닛(256)은 깊이 맵 테스트의 결과값들을 간단히 평균화함으로써 쉐도우 상태 값을 계산하여, 에일리어싱 효과(aliasing effect)를 블러링한다. 여기서, 4개의 샘플들이 존재하므로, 4개의 필터 가중치들 각각은 1/4에 해당한다. 대안적으로, 텍스쳐 유닛(256)은, 종래의 이중 선형 필터링에서와 같이, 샘플링된 텍셀과 투영된 텍셀 간의 상대적 거리에 기초하여 필터 가중치를 적용할 수도 있다. 텍스쳐 유닛(256)은 최종 쉐도우 값 S를 픽셀 쉐이더 엔진(254)으로 반환한다.
전술한 실시예는, 각각의 샘플링된 텍셀의 위치가 사용자-지정 오프셋 위치로부터 도출되는 일 구현을 설명하지만, 본 발명은 예정 텍셀 위치들을 도출하기 위한 다른 가능한 방법들을 고려한다. 본 발명의 대안적 실시예에 따르면, 도 2e는 단일 사용자-지정 오프셋 위치로부터 텍셀 위치들을 도출하는 것을 도시하는 개략도이다. 특히, 전술된 실시예와 같이 사용자가 지정한 4개의 (u, v) 쌍들을 수신하는 대신, 여기서의 텍스쳐 유닛(256)은 (u1, v1)과 같은 단일 Offset1을 수신한다. 그 후, 텍스쳐 유닛(256)은 (u1, v1)쌍을 대칭 변환하여 추가의 사용자 개재(intervention) 없이 그 외의 3개의 오프셋들을 생성한다. 일 구현에서, Offset2, Offset3, 및 Offset4는 각각 (v1, -u1), (-v1, u1), 및 (-u1, -v1) 이다. 예를 들어, (u1, v1)이 (3, 1)의 값들을 가지면, Offset2, Offset3, 및 Offset4는 각각 (1, -3), (-1, 3), 및 (-3, -1)의 값들을 갖는다. 이들 Offset1, Offset2, Offset3, 및 Offset4와 투영된 스크린 픽셀 P의 원래 샘플 위치를 이용하여, 예정 텍셀 위치들 D1', D2', D3' 및 D4'가 계산된다. 도 2c에 도시되고 전술된 구현과는 달리, 본 구현에서 채택된 대칭 변환에 의해, 서로 미러링하는 예정 텍셀 위치들을 자동적으로 생성하고, 이들 미러링하는 텍셀들을 커버하는 필터 커널의 크기 및 모양은 임의적일 수 없음을 유의할 필요가 있다.
본 발명의 다른 실시예에 따르면, 텍스쳐 유닛(256)은 사용자가 지정한 스케일 인자 α를 모든 오프셋들에 적용한다. α는 3으로 가정한다. 전술된 예를 다 시 참조하면, 스케일된 Offset1, Offset2, Offset3, 및 Offset4는 각각 (9, 3), (3, -9), (-3, 9), 및 (-9, -3)이 된다. 스케일 인자를 이용하여, 예정 텍셀 위치들을 포함하는 필터 커널의 크기가 쉽게 변형될 수 있다.
본 발명의 다른 실시예에 따르면, 단 하나의 (u,v) 쌍만을 지정하고 텍스쳐 유닛(256)에 따라 나머지 3개의 Offset들을 생성하는 대신에, 텍스쳐(256)는 2개의 사용자-지정 및 넌-미러링(non-mirroring)의 (u,v) 쌍들을 수신하고 사용자의 추가적인 개입없이 다른 2개의 쌍을 생성한다. 예를 들어, 도 2e를 다시 참조하면, 텍스쳐 유닛(256)은 (u1,v1) 및 (-v1,u1)을 수신한다. 본 구현에서, 텍스쳐 유닛(256)은 수신된 (u,v) 쌍들을 대칭적으로 미러링하여 (-u1,-v1) 및 (v1,-u1)을 각각 생성한다.
텍스쳐 유닛(256)을 트리거링하여 전술한 동작들 중 어느 하나를 수행하기 위한 하나의 방식은 소정의 입력 인자를 갖는 특정 쉐이더 프로그램 명령들을 텍스쳐 유닛(256)에 발행하는 것이다. 이러한 클래스의 쉐이더 프로그램 명령들은 "프로그램가능한 텍셀 위치(PTP) 명령들"로서 언급된다. PTP 명령들에 대한 입력 인자들 중 하나는 사용자-지정 오프셋 위치 또는 사용자-지정 오프셋 위치들의 어레이일 수 있다. 대안적으로, 입력 인자들 중 하나가 텍스쳐 유닛(256)을 트리거하여, 사용자에 의해 테이블 내에 지정되고 저장된 하나 이상의 오프셋 위치들을 검색한다. 본 발명의 일 실시예에 따르면, PTP 명령들 중 일부 예들은 제한없이 다음을 포함한다.
전술한 PTP 명령들 중 어느 하나의 실행은 텍스쳐 유닛(256)을 트리거하여, 소정의 오프셋 위치들에서 투영된 픽셀과 연관된 수많은 텍셀들에 액세스한다. 여기서, 첨자 "ptp"는 단 하나의 프로그램가능한 오프셋 위치가 명령 내의 하나의 픽셀에 대해 지정된다는 것을 의미한다. "ptp" 첨자를 갖는 그러한 명령에 응답하여, 텍스쳐 유닛(256)은 단일의 사용자-지정 오프셋 위치에 기초하여 나머지 3개의 오프셋 위치들을 생성한다. 첨자 "ptp2"는 상기 명령 내에 2개의 프로그램가능한 오프셋 위치들이 지정되어 있다는 것을 의미한다. "ptp2" 첨자를 갖는 명령에 응답하여, 텍스쳐(256)는 2개의 사용자-지정 오프셋 위치들에 미러링된 나머지 2개의 오프셋 위치들을 생성한다. 마지막으로, 첨자 "ptp4"는 상기 명령에는 4개의 프로그램가능한 오프셋 위치들이 정의되어 있다는 것을 나타내는 데 사용된다. 앞의 단락들은 사용자-지정 오프셋 위치(들)로부터 오프셋 위치들을 도출하는 일부 구현들을 설명한다.
도 3은 본 발명의 일 실시예에 따른 프로그램가능한 오프셋 위치들을 포함하는 텍스쳐 유닛(256) 내의 PTP 명령을 실행하는 방법의 단계들을 나타내는 흐름도이다. 구체적으로, 도 2a에 도시한 픽셀 쉐이더 엔진(254) 및 텍스쳐 유닛(256)과 연계하여, 픽셀 쉐이더 엔진(254)이 실행가능한 쉐이더 프로그램(262)을 실행할 때에, 적어도 하나의 사용자-지정 오프셋 위치를 갖는 PTP 명령이 텍스쳐 유닛(256)에 발행될 수 있다. 설명을 위해, 발행된 PTP 명령은 첨자 "ptp4"를 가지고, 4개의 (u,v) 쌍을 포함하는 것으로 가정한다. 단계 302에서, 텍스쳐 유닛(256)은 명령을 수신하고, 명령의 첨자로부터 다수의 (u,v) 쌍들이 존재한다는 것을 인식한다. 단계 304에서, 텍스쳐 유닛(256)은 사용자-지정 오프셋 위치들의 4개의 쌍을 수신하고, 그 후 단계 306에서 예정 텍셀 위치들을 도출한다. 반면, 발행된 PTP 명령이 첨자 "ptp"를 대신 갖는 경우, 단계 304에서 텍스쳐 유닛(256)은 단일의 사용자-지정 오프셋 위치를 여전히 수신하며, 단계 306에서 전술한 대칭 변환을 수행하여 나머지 3개의 예정 텍셀 위치들을 도출한다.
일단 예정 텍셀 위치들이 결정되면, 단계 308에서 텍스쳐 유닛(256)은 PTP 명령 내에 지정된 텍스쳐 맵으로부터 깊이 값 등의 관련 텍셀 속성을 페치한다. 단계 310에서, 발행된 PTP 명령의 타입 및 내용에 따라, 텍스쳐 유닛(256)은 명령에 의해 요청된 동작을 수행한다. 예를 들어, PTP 명령이 Sample _[ ptp / ptp2 / ptp4 ]이라면, 페치된 텍셀 속성은 필터링되고, 픽셀 당 고유한 텍셀이 생성된다. PTP 명령이 Sample _c_[ ptp / ptp2 / ptp4 ]이라면, 깊이-비교는 페치된 텍셀 속성에 대해 수행되고, 그 결과값들이 필터링되어 픽셀 당 고유한 텍셀을 생성한다. 만약 PTP 명령이 Load4 _[ ptp / ptp2 / ptp4 ]라면, 페치된 텍셀 속성은 픽셀 당 반환된다. 깊이-비 교 동작과 필터링 동작 어느 것도 행해지지 않는다. PTP 명령이 Load4 _c_[ ptp / ptp2 / ptp4 ] 이라면, 페치된 텍셀 속성에 대해 깊이-비교가 행해지고, 그 결과들은 픽셀 당 반환된다. 아무런 필터링 동작도 행해지지 않는다.
일 구현에서, 이러한 신규 클래스의 PTP 명령들은 도 2a에 도시한 API(216)의 일부이기 때문에, 이들은 API(216)를 이용하여 개발된 임의의 어플리케이션 프로그램에 의해 호출될 수 있으며, 하드웨어-플랫폼에 독립적이 될 수 있다. 또한, 텍스쳐 유닛(256)과 연계된 이들 명령들은 개발자로 하여금, 확률론적 샘플림 기법과 같이, 대형 사이즈 및 동적으로 생성된 형상을 갖는 필터 커넬들을 초래하는 샘플링 방법들을 효율적으로 구현가능하게 한다. 또한, 전술한 바와 같이 바이리니어 필터링 및 균등 평균화 필터링 외에, 이방성 필터링 및 등방성 필터링과 같이, 다른 필터링 스킴의 프로그램가능한 오프셋 위치들을 사용하는 것은 당업자에게는 명백할 것이다. 예를 들어, 이방성 필터링 동작이 15개의 샘플들을 검색하고 필터링하는 것을 필요로 한다면, 일 구현에서, PTP 명령들 중 하나가 4회 발행되기 때문에 16개의 오프셋 위치들은 16개의 샘플들 모두에 적용된다.
전술한 설명은 본 발명의 양태들이 어떻게 구현될 수 있는지의 예들과 함께 본 발명의 다양한 실시예들을 예시한다. 전술한 예, 실시예, 명령 의미론, 및 도면은 단지 실시예로만 간주되는 것은 아니며, 이하의 청구범위에 의해 정의되는 바와 같은 본 발명의 장점들 및 유연성을 나타낸다.
본 발명의 전술한 특징들이 상세히 이해될 수 있도록, 앞서 간략히 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 행해질 것이며, 그 중 일부는 첨부된 도면에 기술될 것이다. 그러나, 첨부된 도면은 단지 본 발명의 전형적인 실시예들을 예시하며, 본 발명은 그 외 동등하게 효과를 발휘하는 실시예들을 허용할 수 있으므로, 발명의 범위를 제한하는 것으로 고려되어서는 아니된다.
도 1a는 종래 기술의 2×2 필터 커널이 단일의 클럭 사이클에서 픽셀 중심 을 둘러싸는 4개의 인접한 텍셀들을 액세스하고, 그 후 그 텍셀들에 바이리니어 필터링을 적용하는 텍스쳐 맵.
도 1b는 텍스쳐 동작에 필요한 산재하여 분포된 텍셀들을 도시하는 텍스쳐 맵.
도 2a는 본 발명의 하나 이상의 양태들을 구현하도록 구성된 컴퓨팅 디바이스의 개념도.
도 2b는 본 발명의 일 실시예에 따른, 프로그램가능한 오프셋 위치들을 이용하여, 텍스쳐 필터링 동작을 수행하는 도 2a에 도시된 GPU(250)의 일부의 개략도.
도 2c는 본 발명의 일 실시예에 따른, 프로그램가능한 오프셋 위치들을 이용하여, 텍스쳐 동작을 도시하는 텍스쳐 맵의 일부를 도시한 도면.
도 2d는 본 발명의 일 실시예에 따른, 예정된 텍셀 위치에서 깊이 맵 테스트를 일부 텍셀들에 적용하여 얻어진 한 세트의 결과를 도시하는 개념도.
도 2e는 본 발명의 일 실시예에 따른, 단일의 사용자-지정 오프셋 위치로부 터 텍셀 위치들의 도출을 도시하는 개념도.
도 3은 본 발명의 일 실시예에 따른, 프로그램가능한 오프셋 위치들을 이용하여, 텍스쳐 동작을 텍스쳐 단위로 실행하는 방법의 단계들을 나타내는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
250: GPU
254: 픽셀 쉐이더 엔진
256: 텍스쳐 유닛
266: 텍스쳐 버퍼
268: 프레임 버퍼
Claims (20)
- 텍스쳐 동작(texture operation)을 수행하는 방법으로서,텍스쳐 맵 내에 투영된 픽셀과 관련된 원래의 샘플 위치 및 사용자에 의해 지정된 제1 오프셋 위치에 기초하여 제1 예정 텍셀(texel) 위치를 도출하는 단계; 및상기 텍스쳐 동작에 대한 상기 제1 예정 텍셀 위치에서의 텍셀 속성을 페치(fetch)하는 단계를 포함하는 텍스쳐 동작 수행 방법.
- 제1항에 있어서,상기 제1 예정 텍셀 위치에서의 제1 예정 텍셀은, 상기 텍스쳐 맵 내에 투영된 상기 픽셀과 관련되고 그 픽셀과 인접하여 위치하는 4개의 바이리니어(bilinear) 샘플들 중 하나인 텍스쳐 동작 수행 방법.
- 제2항에 있어서,상기 4개의 바이리니어 샘플들 중 하나인 제2 예정 텍셀과 관련된 제2 오프셋 위치를 상기 제1 오프셋 위치로부터 도출하는 단계;상기 원래의 샘플 위치 및 상기 제2 오프셋 위치에 기초하여 상기 제2 예정 텍셀에 대한 제2 예정 텍셀 위치를 도출하는 단계; 및상기 텍스쳐 동작에 대한 상기 제2 예정 텍셀 위치에서의 텍셀 속성을 페치하는 단계를 더 포함하는 텍스쳐 동작 수행 방법.
- 제3항에 있어서,상기 제2 예정 텍셀 위치는 이차원인 상기 텍스쳐 맵의 적어도 하나의 축을 따라 상기 제1 예정 텍셀 위치와 대칭인 텍스쳐 동작 수행 방법.
- 제4항에 있어서,사용자에 의해 지정된 스케일 인자를 상기 제1 오프셋 위치 및 상기 제2 오프셋 위치에 적용하는 단계를 더 포함하는 텍스쳐 동작 수행 방법.
- 제3항에 있어서,상기 제2 오프셋 위치에 대한 상기 텍스쳐 맵의 제1 축들을 따른 좌표값을, 상기 제1 오프셋 위치에 대한 상기 텍스쳐 맵의 제2 축들을 따른 좌표값과 동일하게 설정하는 단계를 더 포함하고, 상기 텍스쳐 맵은 이차원인 텍스쳐 동작 수행 방법.
- 제2항에 있어서,상기 원래의 샘플 위치 및 사용자에 의해 지정된 제2 오프셋 위치에 기초하여, 상기 4개의 바이리니어 샘플들로부터 제2 예정 텍셀에 대한 제2 예정 텍셀 위치를 도출하는 단계; 및상기 텍스쳐 동작에 대한 상기 제2 예정 텍셀 위치에서의 텍셀 속성을 페치하는 단계를 더 포함하는 텍스쳐 동작 수행 방법.
- 제2항에 있어서,상기 텍스쳐 동작은, 상기 4개의 바이리니어 샘플들에 하나 이상의 가중치들을 곱하여(multiplying) 상기 픽셀에 대한 최종값을 생성하는 것을 포함하는 텍스쳐 동작 수행 방법.
- 제8항에 있어서,상기 가중치들은 프로그램 가능한(programmable) 텍스쳐 동작 수행 방법.
- 제1항에 있어서,상기 텍스쳐 동작은 상기 픽셀과 상기 페치된 텍셀 속성 간의 깊이 비교(depth comparison)를 수행하는 것을 포함하는 텍스쳐 동작 수행 방법.
- 제10항에 있어서,상기 텍스쳐 동작은 깊이 비교 동작의 결과에 하나 이상의 가중치들을 곱하는 것을 포함하는 텍스쳐 동작 수행 방법.
- 텍스쳐 동작을 수행하도록 구성되는 컴퓨팅 디바이스로서,상기 컴퓨팅 디바이스는,텍스쳐 유닛을 갖는 프로세싱 유닛; 및텍스쳐 맵을 포함하는 상기 프로세싱 유닛에 결합되는 로컬 메모리를 포함하고,상기 텍스쳐 유닛은,사용자에 의해 지정된 제1 오프셋 위치 및 텍스쳐 맵 내에 투영된 픽셀에 연관된 원래의 샘플 위치에 기초하여 제1 예정 텍셀 위치를 도출하고,상기 텍스쳐 동작에 대한 제1 예정 텍셀 위치에서의 텍셀 속성을 페치하도록 구성되는 컴퓨팅 디바이스.
- 제12항에 있어서,상기 제1 예정 텍셀 위치에서의 제1 예정 텍셀은, 상기 텍스쳐 맵 내에 투영된 상기 픽셀과 관련되고 그 픽셀과 인접하여 위치하는 4개의 바이리니어 샘플들 중 하나인 컴퓨팅 디바이스.
- 제13항에 있어서,상기 텍스쳐 유닛은,상기 4개의 바이리니어 샘플들 중 하나인 제2 예정 텍셀과 관련된 제2 오프셋 위치를 상기 제1 오프셋 위치로부터 도출하고;상기 원래의 샘플 위치 및 상기 제2 오프셋 위치에 기초하여 상기 제2 예정 텍셀에 대한 제2 예정 텍셀 위치를 도출하고;상기 텍스쳐 동작에 대한 상기 제2 예정 텍셀 위치에서의 텍셀 속성을 페치하도록 더 구성되는 컴퓨팅 디바이스.
- 제14항에 있어서,상기 제2 예정 텍셀 위치는 이차원인 상기 텍스쳐 맵의 적어도 하나의 축을 따라 상기 제1 예정 텍셀 위치와 대칭인 컴퓨팅 디바이스.
- 제15항에 있어서,상기 제1 오프셋 위치 및 상기 제2 오프셋 위치에 상기 사용자에 의해 지정된 스케일 인자가 적용되는 컴퓨팅 디바이스.
- 제14항에 있어서,상기 텍스쳐 유닛은, 상기 제2 오프셋 위치에 대한 이차원인 상기 텍스쳐 맵의 제1 축들을 따른 좌표값을, 상기 제1 오프셋 위치에 대한 이차원인 상기 텍스쳐 맵의 제2 축들을 따른 좌표값과 동일하게 설정하도록 더 구성되고, 상기 텍스쳐 맵은 이차원인 컴퓨팅 디바이스.
- 제13항에 있어서,상기 텍스쳐 유닛은,상기 원래의 샘플 위치 및 사용자에 의해 지정된 제2 오프셋 위치에 기초하여, 상기 4개의 바이리니어 샘플들로부터 제2 예정 텍셀에 대한 제2 예정 텍셀 위치를 도출하고;상기 텍스쳐 동작에 대한 상기 제2 예정 텍셀 위치에서의 텍셀 속성을 페치하도록 더 구성되는 컴퓨팅 디바이스.
- 제13항에 있어서,상기 텍스쳐 유닛은, 상기 4개의 바이리니어 샘플들에 하나 이상의 가중치들을 곱하여 상기 픽셀에 대한 최종값을 생성하도록 더 구성되는 컴퓨팅 디바이스.
- 제12항에 있어서,상기 텍스쳐 유닛은, 상기 텍스쳐 동작에서의 상기 픽셀과 상기 페치된 텍셀 속성 간의 깊이 비교를 수행하도록 더 구성되는 컴퓨팅 디바이스.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/755,531 | 2007-05-30 | ||
US11/755,531 US7924290B2 (en) | 2007-05-30 | 2007-05-30 | Method and system for processing texture samples with programmable offset positions |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080106069A KR20080106069A (ko) | 2008-12-04 |
KR100965636B1 true KR100965636B1 (ko) | 2010-06-23 |
Family
ID=40087620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080050367A KR100965636B1 (ko) | 2007-05-30 | 2008-05-29 | 프로그래밍 가능한 오프셋 위치들을 이용하여 텍스쳐샘플들을 처리하기 위한 방법 및 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7924290B2 (ko) |
JP (1) | JP4869290B2 (ko) |
KR (1) | KR100965636B1 (ko) |
CN (1) | CN101339647B (ko) |
TW (1) | TWI401618B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180037838A (ko) | 2016-10-05 | 2018-04-13 | 삼성전자주식회사 | 텍스쳐를 처리하는 방법 및 장치 |
US10559056B2 (en) * | 2017-06-12 | 2020-02-11 | Arm Limited | Graphics processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003009235A1 (fr) * | 2001-07-13 | 2003-01-30 | Sony Computer Entertainment Inc. | Procede de restitution |
EP1489560A1 (en) * | 2003-06-17 | 2004-12-22 | Koninklijke Philips Electronics N.V. | Primitive edge pre-filtering |
JP2005332028A (ja) * | 2004-05-18 | 2005-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 3次元グラフィックスデータ作成方法、テクスチャ画像作成方法、多次元データ符号化方法、多次元データ復号方法及びそれらの方法を実現するための装置、並びにそれらの方法を実現するためのプログラム |
US20060132496A1 (en) * | 2003-02-13 | 2006-06-22 | Noah Horton | System and method for resampling texture maps |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9611941D0 (en) * | 1996-06-07 | 1996-08-07 | Philips Electronics Nv | Three-dimensional image texture mapping |
KR100444778B1 (ko) * | 1999-02-05 | 2004-08-18 | 삼성전자주식회사 | 영상 텍스쳐 추출 방법 및 그 장치 |
JP2003115056A (ja) * | 1999-12-16 | 2003-04-18 | Sega Corp | 画像生成方法及びこれを用いた画像生成装置 |
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US6664962B1 (en) * | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Shadow mapping in a low cost graphics system |
US7324116B2 (en) * | 2002-06-20 | 2008-01-29 | Microsoft Corporation | Systems and methods for providing controllable texture sampling |
DE10242640A1 (de) * | 2002-09-13 | 2004-03-25 | Sp3D Chip Design Gmbh | Verfahren zur Festlegung von Gewichtungsfaktoren für die Farbberechnung eines Farbwerts von Texeln für einen Footprint |
US7221371B2 (en) * | 2004-03-30 | 2007-05-22 | Nvidia Corporation | Shorter footprints for anisotropic texture filtering |
JP2005332195A (ja) * | 2004-05-19 | 2005-12-02 | Sony Computer Entertainment Inc | テクスチャユニット、画像描画装置、テクセル転送方法 |
US7551177B2 (en) * | 2005-08-31 | 2009-06-23 | Ati Technologies, Inc. | Methods and apparatus for retrieving and combining samples of graphics information |
-
2007
- 2007-05-30 US US11/755,531 patent/US7924290B2/en active Active
-
2008
- 2008-05-29 KR KR1020080050367A patent/KR100965636B1/ko active IP Right Grant
- 2008-05-29 CN CN2008101110060A patent/CN101339647B/zh not_active Expired - Fee Related
- 2008-05-30 TW TW097119987A patent/TWI401618B/zh active
- 2008-05-30 JP JP2008143299A patent/JP4869290B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003009235A1 (fr) * | 2001-07-13 | 2003-01-30 | Sony Computer Entertainment Inc. | Procede de restitution |
US20060132496A1 (en) * | 2003-02-13 | 2006-06-22 | Noah Horton | System and method for resampling texture maps |
EP1489560A1 (en) * | 2003-06-17 | 2004-12-22 | Koninklijke Philips Electronics N.V. | Primitive edge pre-filtering |
JP2005332028A (ja) * | 2004-05-18 | 2005-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 3次元グラフィックスデータ作成方法、テクスチャ画像作成方法、多次元データ符号化方法、多次元データ復号方法及びそれらの方法を実現するための装置、並びにそれらの方法を実現するためのプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN101339647B (zh) | 2011-10-19 |
US20080297528A1 (en) | 2008-12-04 |
JP4869290B2 (ja) | 2012-02-08 |
CN101339647A (zh) | 2009-01-07 |
US7924290B2 (en) | 2011-04-12 |
KR20080106069A (ko) | 2008-12-04 |
JP2008299852A (ja) | 2008-12-11 |
TW200903387A (en) | 2009-01-16 |
TWI401618B (zh) | 2013-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10438400B2 (en) | Perceptually-based foveated rendering using a contrast-enhancing filter | |
US10665208B2 (en) | Graphics processing systems and graphics processors | |
EP2849154B1 (en) | Adaptive multi-frequency shading | |
US8300059B2 (en) | Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping | |
US9881391B2 (en) | Procedurally defined texture maps | |
EP2277106B1 (en) | Software rasterization optimization | |
US10049486B2 (en) | Sparse rasterization | |
KR100703709B1 (ko) | 그래픽스 처리장치와 처리방법, 및 그 기록 매체 | |
CN109584140B (zh) | 图形处理 | |
US10417813B2 (en) | System and method for generating temporally stable hashed values | |
US8004515B1 (en) | Stereoscopic vertex shader override | |
KR100965636B1 (ko) | 프로그래밍 가능한 오프셋 위치들을 이용하여 텍스쳐샘플들을 처리하기 위한 방법 및 시스템 | |
US7623136B1 (en) | Method and system for processing texture samples with programmable filter weights | |
US12106418B2 (en) | Sampling for partially resident textures | |
Doggett | Programmability features of graphics hardware | |
US10311627B2 (en) | Graphics processing apparatus and method of processing graphics pipeline thereof | |
WO2022164651A1 (en) | Systems and methods of texture super sampling for low-rate shading | |
WO2022203833A1 (en) | Synchronization free cross pass binning through subpass interleaving | |
Bærentzen | Lecture Notes on Real-Time Graphics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130522 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140521 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150519 Year of fee payment: 6 |