KR20070084346A - 동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램 - Google Patents

동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20070084346A
KR20070084346A KR1020077011298A KR20077011298A KR20070084346A KR 20070084346 A KR20070084346 A KR 20070084346A KR 1020077011298 A KR1020077011298 A KR 1020077011298A KR 20077011298 A KR20077011298 A KR 20077011298A KR 20070084346 A KR20070084346 A KR 20070084346A
Authority
KR
South Korea
Prior art keywords
shader
code
generating
vertex
texture
Prior art date
Application number
KR1020077011298A
Other languages
English (en)
Other versions
KR101184500B1 (ko
Inventor
마이클 비. 카터
브렛 이. 하퍼
Original Assignee
유지에스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 유지에스 코포레이션 filed Critical 유지에스 코포레이션
Publication of KR20070084346A publication Critical patent/KR20070084346A/ko
Application granted granted Critical
Publication of KR101184500B1 publication Critical patent/KR101184500B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

필요한 일단의 그래픽 출력 특성을 기초로 쉐이더 소스 코드를 자동으로 생성하는 시스템, 방법 및 컴퓨터 프로그램 제품.
쉐이더, 그래픽 장치, 텍스쳐 매핑.

Description

동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램{SYSTEM, METHOD, AND COMPUTER PROGRAM PRODUCT FOR DYNAMIC SHADER GENERATION}
관련 출원
본 출원은 2004년 10월 20일 출원된 미합중국 가특허 출원(provisional patent application) 60/620,638의 출원일의 이익을 주장하며, 이는 본 명세서에 참조로서 통합된다.
발명의 분야
본 발명은, 일반적으로 컴퓨터 그래픽에 관한 것이다.
최신의 상업용 그래픽 어댑터는 고도로 프로그램 가능하도록(programmable) 발전되어 왔다. 어댑터는 호스트 컴퓨터 상에서 동작하는 애플리케이션 프로그램을 제어함으로써 어댑터로 다운로드된 실제 코드(actual code)를 실행할 수 있다. 프로그램 가능한 그래픽 하드웨어에 다운로드되는 이들 프로그램 중 일부는 "쉐이더(shader)"라고 지칭된다. 일반적으로, 쉐이더는 구성 및 프로그래밍에 따라 픽셀 단위 기반, 버텍스, 폴리곤 및 기타 오브젝트 상에 커스텀 라이팅(custom lighting), 컬러링(coloring) 및 기타 효과를 적용하는 그래픽 함수이다. 쉐이더는 프로그래머로 하여금 3차원 세계의 오브젝트에 대해 복잡한 특수 효과를 추가할 수 있도록 한다. 본 기술 분야의 현재 상황에 있어서, 이러한 쉐이더 프로그램을 생성하는 것은 사용자의 몫이다. 쉐이더는 숙련된 소프트웨어 전문가에 의해 생성되어야 하지만, 사용되는 것은 숙련된 예술 전문가이다.
예술 전문가는 흔히 특정 형상을 이루어내는데 필요한 출력 특성을 지정하지만, 그러한 특성을 생성하기 위해 필요한 쉐이더 소스 코드를 개발할 수는 없다.
따라서, 필요한 그래픽 출력 특성의 집합에 기초하여 자동으로 쉐이더 소스 코드를 생성하기 위한 시스템, 프로세스 및 컴퓨터 프로그램이 본 기술 분야에 필요하다.
바람직한 실시예는, 필요한 일단의 그래픽 출력 특성을 기초로 쉐이더 소스 코드를 자동으로 생성하는 시스템, 방법 및 컴퓨터 프로그램 제품을 제공한다. 바람직한 실시예는 최신의 쉐이딩 언어 Cg 및 GLSL를 모두 지원하며, 기타의 언어(HLSL 등)에도 적용 가능하다. 바람직한 실시예의 한 가지 중요한 가치는, 그래픽 전문가에 의해 특정 코드가 작성되지 않는 한 다른 방식으로는 조합될 수 없는, 지원되는 그래픽 효과의 본질적으로 임의적인 조합을 통합하는 고성능 쉐이더를 용이하게 생성한다는 점이다. 사실상, 개시된 실시예는 넓은 범위의 가능한 그래픽 효과로부터 특정 목적을 위한 쉐이더를 제작하는데 필요한 컴퓨터 그래픽 전문가의 전문 지식을 캡슐화(encapsulate)하는 것이다.
전술한 내용은 후술할 발명의 상세한 설명을 당업자가 보다 잘 이해할 수 있도록 본 발명의 특징과 기술적 이점을 넓게 개설한 것이다. 발명의 청구 범위에 대한 요지를 이루는, 본 발명의 추가적인 특징과 이점이 이하 기술될 것이다. 당업자라면 본 발명과 동일한 목적을 수행하는 기타의 구조를 수정 또는 설계하기 위한 기반으로서 개시된 개념과 특정 실시예를 용이하게 이용할 수 있음을 인지할 것이다. 또한 당업자는 그러한 동등한 구성이 본 발명의 가장 넓은 견지에서 발명의 원리와 범주를 벗어나지 않음을 인지할 것이다.
이하 발명의 실시예를 설명하기 전에, 본 출원 명세서에서 사용되는 특정 단어 또는 문구에 대한 정의를 열거할 필요가 있다. "포함하다"라는 용어, 뿐만 아니라 그로부터 파생되는 용어는 한정함이 아닌 포괄함을 의미하고, "또는"이라는 용어는 '및/또는'을 의미하는 포괄적인 것이며, "~와 연관된"이라는 문구, 뿐만 아니라 그로부터 파생되는 문구는 '~를 포함하는,' '~에 포함되는,' '~와 상호작용하는,' '~을 함유하는,' '~에 함유되는,' '~에 연결되는' 또는 '~와 연결되는,' '~에 접속되는' 또는 '~와 접속되는,' '~와 통신 가능한,' '~와 협력하는,' '와 인터리브하는(interleave),' '~와 병렬인(juxtapose),' '~에 인접한,' '~에 접한' 또는 '~와 접한,' '~를 갖는,' '~의 특성을 갖는' 등을 의미할 수 있고, "제어기(controller)"는 적어도 하나의 동작을 제어하는 임의의 장치, 시스템 또는 구성요소를 의미하며, 하드웨어, 펌웨어, 소프트웨어 또는 이들 중 둘 이상의 소정 조합으로 구현되었는가에 구애되지 않는다. 임의의 제어기와 연관된 기능성은 국부적으로든 또는 원격적으로든 집중화 또는 분산화될 수 있음을 유의하여야 한다. 본 특허 명세서를 통해 특정 단어 및 문구에 대한 정의가 마련될 것이며, 당업자라면 그러한 정의가, 대부분은 아니더라도 많은 경우에 있어서, 정의된 단어 및 문구를 추후 사용하는 것 뿐만 아니라 이전에 사용한 것에도 적용됨을 이해할 것이다.
본 발명과 그에 따른 이점에 대하여 보다 정확히 이해하기 위해, 첨부된 도면과 연계하여 이하 설명하도록 한다. 유사한 참조 부호는 유사한 항목을 표시한다.
도 1은 바람직한 실시예가 구현될 수 있는 데이터 프로세싱 시스템의 블록도.
도 2는 바람직한 실시예에 따른, JtAttribute, JtTextImage 및 JtShader 클래스 다이어그램.
도 3은 바람직한 실시예에 따른, JtLightSet 및 JtDrawStyle 클래스 다이어그램.
도 4는 바람직한 실시예에 따른, 인터페이스를 구현하는데 필요한 정확한 타입(exact type)과 이뉴머레이션(enumeration)을 설명하는 UML 다이어그램.
도 5는 바람직한 실시예에 따른 버텍스 쉐이더 소스 코드를 생성하는 프로세스의 흐름도.
도 6은 바람직한 실시예에 따른 단편(fragment) 쉐이더 소스 코드를 생성하는 프로세스의 흐름도.
이하 설명되는 도 1 내지 도 6, 또한 본 명세서의 발명의 원리를 묘사하는데 사용되는 다양한 실시예들은 예시의 방식일 뿐이며 발명의 범주를 한정하는 것으로 해석되어서는 아니된다. 당업자라면 본 발명의 원리가 적합하게 구성된 임의의 장치에 구현될 수 있음을 이해할 것이다. 본 애플리케이션의 많은 혁신적인 교시 내용이 특정 레퍼런스와 함께 바람직한 실시예에 대하여 설명된다.
도 1은 바람직한 실시예가 구현될 수 있는 데이터 프로세싱 시스템의 블록도를 도시한다. 도시된 데이터 프로세싱 시스템은 2 레벨 캐시/브리지(104)에 연결된 프로세서(102)를 포함하며, 2 레벨 캐시/브리지(104)는 차례로 로컬 시스템 버스(106)에 연결된다. 로컬 시스템 버스(106)는, 예를 들면, PCI(peripheral component interconnect) 아키텍처 버스일 수 있다. 또한 도시된 예에 있어서 로컬 시스템 버스에 주 메모리(108)와 그래픽 어댑터(110)가 연결된다.
또한 근거리 통신망(LAN) / 광역 통신망(WAN) / 무선(예를 들면 WiFi) 어댑터(112)와 같은 기타 주변 장치들이 로컬 시스템 버스(106)에 연결될 수 있다. 확장 버스 인터페이스(expansion bus interface; 114)는 로컬 시스템 버스(106)를 입/출력(I/O) 버스(116)에 연결한다. I/O 버스(116)는 키보드/마우스 어댑터(118), 디스크 컨트롤러(120) 및 I/O 어댑터(122)에 연결된다.
또한 도시된 예에서 오디오 어댑터(124)가 I/O 버스(116)에 연결되며, 여기에 사운드를 내기 위하여 스피커(도시되지 않음)가 연결될 수 있다. 키보드/마우스 어댑터(118)는, 마우스, 트랙볼, 트랙포인터 등과 같은 포인팅 장치(pointing device)를 위한 연결을 제공한다.
당업자라면 도 1에 도시된 하드웨어는 상세한 부분에 대하여 변화할 수 있음을 인지할 것이다. 예를 들면, 광학 디스크 드라이브 등과 같은 기타 주변 장치가 도시된 하드웨어에 부가하여, 또는 그에 대신하여 사용될 수 있다. 도시된 예는 오직 설명의 목적으로 제공된 것이며 본 발명에 대한 구조적인 한정을 의미하는 것은 아니다.
본 발명의 바람직한 실시예에 따른 데이터 프로세싱 시스템은 그래픽 사용자 인터페이스를 사용하는 운영 체제를 포함한다. 운영 체제는 복수의 디스플레이 윈도우가 동시에 그래픽 사용자 인터페이스에 나타날 수 있도록 하며, 각각의 디스플레이 윈도우는 서로 다른 애플리케이션에 대한 인터페이스 또는 동일한 애플리케이션의 서로 다른 인스턴스에 대한 인터페이스를 제공한다. 그래픽 사용자 인터페이스의 커서는 포인팅 장치를 통해 사용자에 의해 조작될 수 있다. 커서의 위치는 변경될 수 있고, 또한/또는 마우스 버튼 클릭과 같은 이벤트가 생성되어 필요한 응답을 유발할 수 있다.
워싱턴 레드먼드에 위치한 마이크로소프트 코퍼레이션의 제품인 Microsoft WindowsTM 버전과 같은 다양한 상업용 운영 체제 중 하나를 적절히 수정하여 사용할 수 있다. 운영 체제는 기술된 바와 같이 본 발명에 따라 수정 또는 생성된다.
바람직한 실시예는 필요한 그래픽 출력 특성 집합에 기초한 쉐이더 소스 코드를 자동적으로 생성하기 위한 시스템, 방법 및 컴퓨터 프로그램을 제공한다. 바람직한 실시예, 즉 JtShaderEffect는 텍사스 플라노의 UGS CORP.의 모델링 시스템 과 연계하여 사용하는 시각화 툴킷(visualization toolkit)의 일부로서 구현되며, 최신 쉐이더 언어 Cg 및 GLSL 모두를 지원한다. JtShaderEffect의 중요한 가치는, 그래픽 전문가에 의해 특정 코드가 작성되지 않는 한 조합될 수 없는, 지원되는 그래픽 효과의 본질적으로 임의적인 조합을 통합하는 고성능 쉐이더를 용이하게 생성한다는 점이다. 사실상, JtShaderEffect는 넓은 범위의 가능한 그래픽 효과로부터 특정 목적을 위한 쉐이더를 제작하는데 필요한 컴퓨터 그래픽 전문가의 전문 지식을 캡슐화하는 것이다.
이하의 설명의 많은 부분이 JtShaderEffect 및 상기 설명된 시각화 툴킷과 관련된 특정 실시예에 대한 것이지만, 당업자라면 본 명세서의 교시 내용이 그러한 구현에 한정되지 않으며, 많은 기타의 소프트웨어 애플리케이션에 적용 가능하다는 것을 인지할 것이다.
본 명세서에서 사용되는 경우, JtAttribute라는 용어는 장면 그래프(scene graph)에 위치한 모디파이어(modifier)를 지칭하는 것으로, 이는 장면 그래프에 놓인 지오메트리 객체가 렌더링되는 방식의 소정 양태를 표현하고자 하는 것이다. 각 JtAttribute는 시스템에 의해 객체가 렌더링되어야 할 방식의 일부를 인코딩한다. JtAttribute의 예로 재질 색상(material color), 텍스쳐 맵 및 광원(light source)을 들 수 있다. 이들 JtAttribute는, 객체가 렌더링되어야 하는 방식에 대한 전체 설명을 나타내는 최종 "JtState"에 도달하도록 그래프에서 "제거되거나(washed)" 또는 "축적된다(accumulated)."
JtShaderEffect는 애플리케이션이 필요로 하는 특정 시각 효과를 기술하는 중요한 임무를 맡으며, 이러한 기술을 장면 그래프의 소정 지점에 현재 위치한 JtAttribute와 믹싱하고, 적용시 필요한 시각 효과를 생성하도록 상기 기술 내용을 온 더 플라이(on-the-fly) 방식으로 생성된 JtShader로 번역한다.
JtShaderEffect는 그 자체로 JtAttribute이며, 다른 모든 속성과 함께 장면 그래프에서 제거된다. 속성 제거 메카니즘(attribute washing mechanism)은 논리 장면 그래프(logical scene graph; LSG)에 대한 속성 변화를 자동으로 감지하여, 필요에 따라 LSG의 해당 부분의 속성을 다시 제거(re-wash)한다. 이러한 동작의 결과가 LSG의 렌더링 가능한 엔티티(renderable entity) 각각에 대한, 완전히 특정되고(fully specified), 포괄적이며(comprehensive), 최신의 JtState이다. 그러면 이러한 축적된 JtShaderEffect 속성은 모델링 시스템 상태에 대한 완전한 이해를 바탕으로 쉐이더 소스 코드를 생성할 수 있다. 제어 애플리케이션의 역할은 매우 단순화되며, 모델링 시스템은 쉐이더 소스 코드가 생성되는 시점에 대한 제어를 갖게 되고, 이렇게 함으로써 필요한 경우에만 제어를 갖게 된다.
기존의 JtAttribute는 그 함수가 하위 그래픽 인터페이스(이 경우 OpenGL)에 적절히 조화되는 하급 제어로 간주되어야 하며, "고급(high-order)" 시각 효과에 대한 제어는 JtShaderEffect의 API로 분류된다. 이를 예를 들어 설명하면 다음과 같다. 텍스쳐 매핑, 환경 매핑(environment maping), 범프(또는 일반) 매핑(bump mapping)의 세 가지 개념을 고려해보자. 텍스쳐 매핑은 JtTexImage 속성에 의해 처리되는 일반 함수이다. 텍스쳐 맵은 환경 맵 또는 범프 맵과 달리 임의의 특정한 고급 사용 또는 목적을 수반하지 않는다. 환경 맵 또는 범프 맵의 경우, 그 함 수는 일반 텍스쳐 매핑 기능을 이용하여 구현되지만, 범프 맵과 환경 맵은 자체적으로 정확히 텍스쳐 이미지가 어떤 방식으로 사용되는지, 그 목적이 무엇인지에 대한 추가적인 내재 의미(meaning)를 포함한다. 또한, OpenGL 그래픽 API는 환경 매핑 또는 범프 매핑의 개념을 직접적으로 구현하지 않는다.
따라서, 텍스쳐 매핑은 모델링 시스템 JtAttribute에 의해 관리되는 함수이고, 환경 매핑과 범프 매핑은 JtShaderEffect에 의해 처리되는 함수이다. 퐁 쉐이딩(Phong shading), 그림자 생성(shadow generation) 및 채색 효과 등의 추가적인 효과에도 유사한 논리가 적용된다.
JtShaderEffect는 다음과 같은 시각 특성 요건을 만족시키며, 이들 요건은 모두 통합된 구현으로 함께 어우러진다. 즉, (암시적으로 최근 축적된 JtState로부터의) 모델 좌표 광원; (암시적으로 최근 축적된 JtState로부터의) 뷰 좌표(view coordinate) 광원; (암시적으로 최근 축적된 JtState로부터의) 광역 좌표(world coordinate) 광원; (암시적으로 최근 축적된 JtState로부터의) 다중 텍스쳐 맵; 환경 맵(구형 또는 입방체; 본 특성은 환경 맵으로서 적용되는 액티브 텍스쳐 맵 중 하나를 말한다); 범프 맵(본 특성은 범프 맵으로서 적용되는 액티브 텍스쳐 맵 중 하나를 말한다); 퐁 쉐이딩 또는 고라우드 쉐이딩(Gouraud shading); 및 그림자 등이다.
JtShaderEffect 속성이 JtState로 축적되는 경우, 어떤 종류의 그래픽 특성을 지원할 것인지를 알기 위해 JtState 내에 존재하는 그래픽 상태(state)의 전체 명세(description)를 이용한다. 예를 들면, JtState는, 존재하는 광원의 수와 종 류; 적용되는 모든 텍스쳐 맵과 그것들이 사용되는 방식을 특정하는 관련 텍스쳐 환경; 텍스쳐 좌표의 임의의 자동 생성; 범프 맵으로서 지시될 수 있는 텍스쳐 맵; 환경 맵으로서 지시될 수 있는 텍스쳐 맵과 나타날 수 있는 반사율; 및 재료 색상(주변광(ambient), 반사광(specular), 확산(diffuse), 발광(emitted))과 관련 파라미터(광택(shininess), 투명도(alpha)) 등을 인코딩한다.
어떠한 단일 쉐이더도 이들 파라미터의 가능한 조합 모두를 효율적인 방식으로 처리하지 못한다. 따라서, JtShaderEffect는 이들 그래픽 특성의 리스트를 검사하여, 하위 그래픽 하드웨어 상에서 가능한 최적으로 동작하도록 특유하게 제작된 하나 이상의 쉐이더 프로그램을 생성한다.
텍스쳐링, 재질, 이미지, 그림자 및 무엇보다도 쉐이더에 대한 중요한 새로운 기능을 지원하기 위해 다양한 실시예들이 모델링 시스템 그래픽 미들웨어 툴킷과 JT 파일 포맷에 새로운 기능성을 부가한다.
본 명세서에서 다음과 같은 정의 및 용어들이 사용되지만, 당업자라면 이하에 주어진 특정한 정의 외에 통상적인 의미가 적합한 경우를 인지할 것이다.
쉐이더(shader) - 사용자 정의 가능한 프로그램으로서, 타겟 어셈플리 언어, 또는 컴파일되는 고급 형태로 직접 표시된다. 쉐이더 프로그램은 다른 방식의 고정된 기능성(fixed-functionality) 그래픽 파이프라인 부분을 소정 사용자 정의 프로그램으로 대체한다. 오늘날, 하드웨어 제작자들에 의해, 처리되는 각 버텍스 및/또는 렌더링되는 각 픽셀에 대하여 쉐이더를 동작시키는 것이 가능하게 되었다.
버텍스 쉐이더(vertex shader) - GPU에 전송되어 처리되는 각 버텍스에 대하 여 동작되는 작은 사용자 정의 프로그램. 버텍스 쉐이더는 버텍스 위치와 노말을 변화시키고, 텍스쳐 좌표를 생성하며, 고라우드 버텍스 라이팅(lighting)을 수행하는 등의 동작을 할 수 있다.
픽셀 쉐이더(pixel shader) - 보다 정확하게는 단편 쉐이더(fragment shader)라고 불리움. 단편이란 3각 주사 변환(triangle scan-conversion)에 의해 생성되었으나 아직 프레임 버퍼에 저장되지 않은 원시 픽셀(proto-pixel)이다. 작은 사용자 정의 프로그램이 하드웨어의 주사 변환 로직에 의해 생성된 각 단편에 대하여 동작된다. 단편 쉐이더는 퐁 쉐이딩, 그림자 매핑, 범프 매핑, 반사 매핑 등과 같은 정교한 효과를 지원할 수 있다.
Cg - nVIDIA에 의해 설계 및 배포된 C와 유사한 고급 쉐이딩 언어.
OGLSL - OpenGL 2.0 구현에서 사용 가능하게 된 C와 유사한 고급 쉐이딩 언어. Cg에 대하여 보다 제조사에 독립적(vendor-neutral)이고 플랫폼에 중립적(platform-neutral)인 대안으로서 3Dlabs에 의해 설계 및 배포되었다.
HLSL - Direct3D 그래픽 API를 위한 C와 유사한 고급 쉐이딩 언어로서, 마이크로소프트와 nVIDIA 간의 협력으로 설계되었다. nVIDIA 및 ATI에 의해 지원된다. HLSL은 현재, 본질적으로 Cg와 동일하다.
텍스쳐 매핑(texture mapping) - 텍스쳐 이미지(q.v.)를 지오메트리 엔티티(geometry entity)에 매핑하는 기술. 가장 단순한 형태로, 텍스쳐 매핑은 벽지를 벽면에 붙이는 것과 같다. 텍스쳐 맵은 텍스쳐 이미지 및 텍스쳐 환경의 두 부분으로 나뉘는 복합 엔티티(composite entity)이다.
텍스쳐 이미지(texture image) - 보통 2차원 색상 이미지로, 텍스쳐 매핑에 사용되는 이미지. 명칭이 의미하듯이, 텍스쳐 이미지는 텍셀(c.f. 픽셀)의 사각형 어레이일 뿐이며, 그 이미지가 지오메트리 상에 매핑되는 방식에 대한 어떠한 정보도 포함하거나 암시하지 않는다.
텍스쳐 환경(texture environment) - 이것은 텍스쳐 이미지(q.v.)가 지오메트리 조각 위에 매핑되는 방식을 정확하게 기술하는 개별적인 속성의 복합 집합이다. 텍스쳐 환경의 통상적인 요소는 랩/클램프 모드(wrap/clamp mode), 블렌딩 타입, 자동 텍스쳐 좌표 생성 기능 등을 포함한다.
범프 매핑(bump mapping) - 작은 요철로 이루어진 거친 표면에 대해 일반적으로 존재하는, 작은 스케일의 쉐이딩 효과를 발생시키기 위해 저장된 노말 맵을 기초로 픽셀 당 노말 벡터를 조정하는 텍스쳐 매핑 기술.
NVIDIA - 캘리포니아 산타클라라에 위치한 그래픽 하드웨어 제조사. 쿼드로(Quadro; 전문가용) 및 지포스(GEForce; 일반용) GPU의 메이커. 최근 상용 그래픽 하드웨어 사업의 시장 및 기술적 우위를 위해 ATI(q.v.)와 상업적 경쟁 중. OpenGL에 대한 Cg 고급 쉐이딩 언어의 발명자. Direct3D에 대한 HLSL 쉐이딩 언어에 대한 공동 발명자.
ATI - 캐나다 온타리오 마크햄에 위치한 그래픽 하드웨어 제조사. 최근 상용 그래픽 하드웨어 사업의 시장 및 기술적 우위를 위해 nVIDIA(q.v.)와 상업적 경쟁 중. 주로 게임 산업을 서비스하지만, 여러 경쟁력있는 OpenGL 제품도 제공한다.
3Dlabs - 그래픽 하드웨어 제조사로서, 크리에이티브 테크놀로지(Creative Technologies, Inc.)의 자회사. 전문가용 그래픽 어댑터의 와일드캣(Wildcat) 및 리얼리즘(Realizm) 제품군의 메이커. OpenGL 쉐이딩 언어(q.v.)의 창시자. nVIDIA와 ATI의 관심을 끌기에는 너무 작거나 특화된 고성능 및 몰입형(immersive) 애플리케이션에 있어서 탁월함.
GPU - 그래픽 프로세싱 유닛. 본 용어는 현대 그래픽 하드웨어의 프로그램 가능한 특성으로 인해 그래픽 하드웨어를 지칭하는 경우 유명한 것이 되었다. CPU라는 용어와 비교될 수 있다.
다음의 문서들은 본 명세서에 참고 문헌으로 통합된다.
"Cg 튜토리얼," Randima Fernando 및 Mark J. Kilgard 저, nVIDIA 코퍼레이션, 에디슨 웨슬리 출판사, 2003년 4월;
OpenGL 1.5 설명서,
http://www.opengl.org/documentation/spec.html;
OpenGL 쉐이딩 언어 설명서,
http://www.opengl.org/documentation/oglsl.html; 및
Cg 툴킷 사용자 매뉴얼,
http://developer.nvidia.com/object/cg_users_manual.html;
JtShaderEffect : JtShaderEffect는 본 특성의 주된 내용이다. JtShaderEffect는 JtAttribute에서 파생되며, 다른 JtAttribute와 같이 LSG에서 전 파된다.
JtShaderEffect는 애플리케이션이 필요로 하는 특정 시각 효과의 기술하는 중요한 임무를 맡으며, 이러한 기술을 장면 그래프의 소정 지점에 현재 위치한 JtAttribute와 믹싱하고, 적용시 필요한 시각 효과를 생성하도록 상기 기술 내용을 온 더 플라이(on-the-fly) 방식으로 생성된 JtShader로 번역한다.
이러한 기법은 JtShaderEffect가 "정형화된(factory-like)" 객체였던 종래의 기법에 비하여 중대한 이점을 갖는다. 다음과 같은 시나리오를 고려해보자. 즉, JtShaderEffect가 루트 노드에서 적용되고, 조명(light)의 디폴트 집합도 루트 노드에서 적용된 장면 그래프를 가정한다. 이제, 추가적인 조명 또는 추가적인 JtTextImage가 장면 그래프의 본체(body) 어딘가에 추가되는 경우 어떤 일이 벌어질지를 고려해보라. 이 서브그래프(subgraph)에 있어서, 실제 생성된 쉐이더 소스는 새로운 조명 또는 텍스쳐를 반영하기 위해 달라져야만 한다.
만일 JtShaderEffect가 정형화된 객체로 구현된다면, 제어 애플리케이션은, 서로 다른 쉐이더 소스 코드를 필요로 하고, JtShaderEffect를 두번 처리하여, LSG에 그 결과를 적절히 적용하는 처리를 하게 되는 두 개의 별개 상황이 LSG에 존재한다는 것을 인지하여야 한다. 따라서, 제어 애플리케이션은 LSG에 대한 속성 변화를 추적하고, 임의의 속성 변화에 따라 임의적인 양의 쉐이더 코드를 재생성해야한다는 큰 부담을 지게 된다. 요약하면, 이러한 방법에는 모델링 시스템의 강력하고 느린 속성 축적 메카니즘(attribute accumulation mechanism)의 이점이 없다.
그러나, JtShaderEffect가 JtAttribute인 경우, 그것은 다른 모든 속성들과 함께 LSG에서 제거된다. 상기 기술된 경우에 있어서, 기존의 속성 제거 메카니즘은 LSG에 대한 속성 변화를 자동으로 감지하여, 필요에 따라 LSG의 해당 부분의 속성을 다시 제거한다. 이러한 동작의 자연스런 결과로, 리프(leaf) 레벨에서 두 개의 별개 속성 상태가 야기된다. 즉, 루트 노드로부터 제거된 본래의 상태와, 조명 또는 텍스쳐 맵의 추가로 야기된 변경 상태가 생성된다. 그러면 이들 축적된 JtShaderEffect 속성은 모델링 시스템 상태에 대한 완전한 이해를 바탕으로 쉐이더 소스 코드를 생성할 수 있다. 제어 애플리케이션의 역할은 매우 단순화되며, 모델링 시스템은 쉐이더 소스 코드가 생성되는 시점에 대한 제어를 갖게 되고, 또한 그렇게 함으로써 필요한 경우에만 제어를 갖게 된다.
ShaderEffect이 최적으로 기능하는 방식의 상세한 동작에 대한 설명은 필요한 입력과 계획된 출력에 대하여 기술함으로써 시작한다.
먼저 ShaderEffect의 현재 실시예에 대한 입력을 설명한다. 당업자라면 추가적인 시각 효과를 기술하기 위해 추가적인 파라미터가 ShaderEffect에 추가될 수 있음을 알 것이다. JtShaderEffect는 본 명세서에 기술된 특정 입력에 한정되지 않는다 - 이는 단지 제1 실시예에 적용된 것일 뿐이다.
축적된 JtState로부터
정의된 모든 광원 데이터. 상세하게는 각 광원에 대하여 :
광원 타입(무한 조명, 점 조명, 스포트라이트 등),
광원 좌표계(이를테면 모델-, 광역- 또는 시점 좌표). 이들 데이터는 어떤 지오메트리 좌표계에서 광원이 동작하는가를 제어한다.
광원 위치(점- 또는 스포트라이트인 경우)
광원 방향(무한 조명인 경우)
광원 색상 정보. 이는 확산 색상, 반사 색상 및 앰비언트 색상과 같은 모든 모델링된 파라미터를 포함한다.
스포트라이트 파라미터(조명이 스포트라이트인 경우). 이는 스포트 방향(spot direction), 콘 각도(cone angle) 및 콘 각도에 대하여 조명 강도가 분산되는 것을 제어하는 감쇄 파라미터(falloff parameter)를 포함한다.
조명 정보로서, 이를테면
조명이 인에이블되었는가
양면 조명(two-sided lighting)이 인에이블되었는가
백페이스 컬링(backface culling)이 인에이블되었는가
와 같은 조명 정보,
정의된 모든 액티브 텍스쳐. 정의된 액티브 텍스쳐 각각에 대해, 다음의 데이터가 사용된다.
텍스쳐의 채널 번호. 복수의 텍스쳐가 동시에 적용될 수 있으며, 상위 번호 채널의 텍스쳐가 하위 채널 텍스쳐의 위에 위치한다.
쉐이더 내에서 텍스쳐 자체를 액세스하는 방법. 이를테면 텍스쳐의 OpenGL 텍스쳐 객체 이름 또는 그와 연관된 OpenGL 텍스쳐 유닛 번호를 말한다.
텍스쳐의 생성(texgen) 환경. 이 설정은 사전 설정된 기법에 따라 버텍스를 처리하는 동안 텍스쳐 좌표를 자동으로 생성하는데 이용된다.
텍스쳐 변환 매트릭스.
ShaderEffect 자체로부터
어떠한 텍스쳐 맵이, 있는 경우, 환경 맵으로 지정될 것인가의 정보. 또한 이들 파라미터와 함께, 매핑된 표면이 환경 맵을 어느 정도 강하게 반사할 것인가를 제어하는 반사율 파라미터가 지정된다.
어떠한 텍스쳐 맵이, 있는 경우, 범프 맵으로 지정될 것인가의 정보. 또한 이들 파라미터와 함께 다른 두 가지가 지정된다. 첫 번째는 텍스쳐 맵이 탄젠트 공간 범프 맵(tangent space bump map)으로 해석되어야 하는지, 또는 모델 공간 범프 맵(model space bump map)으로 해석되어야 하는지를 인코딩하는 플래그이다. 탄젠트 공간 맵은 면의 고유 노말에 관련된 노말 벡터 섭동(perturbation)을 인코딩한다. 모델 공간 범프 맵은 필요한 노말 벡터 맵으로서 그대로(verbatim) 해석되며, 사용자에 의해 지오메트리의 주어진 부분에 대하여 특유하게 생성되어야 한다. 두 번째 범피니스 파라미터(bumpiness parameter)는 탄젠트 공간 노말 맵의 섭동의 시각적 크기를 조정하는 편리한 방법으로서 제공된다.
(픽셀 당) 퐁 조명(Phong lighting)이 인에이블되었는가.
GLSL 또는 Cg 중 어떠한 쉐이딩 언어를 타겟으로 하는가.
공유 그래픽 환경으로부터
전체 조명(global lighting) 모델 정보. 이는 전체 앰비언트 조명 색상을 포함하지만, 이에 한정되는 것은 아니다.
뷰잉 모드(viewing mode)와 관련된 파라미터. 이는 4x4 모델-, 뷰- 및 프로 젝션 매트릭스를 포함하나, 이에 한정되는 것은 아니다.
또한 JtShaderEffect로부터의 출력 부분은 호스팅 그래픽 시스템에 존재하는 필요한 그래픽 양(quantity) 및 지오메트리 양에 연결되어야 하는 쉐이더 파라미터의 리스트이다.
도 5는 바람직한 실시예에 따른, 버텍스 쉐이더를 생성하기 위한 프로세스의 흐름도를 도시한다.
버텍스 쉐이더를 생성하기 위해, JtShaderEffect는 다음의 광범위한 단계를 수행한다.
상기의 정보를 이용하여 쉐이더 프리앰블(preamble) 및 파라미터 리스트를 생성한다(단계 505). 쉐이더 파라미터는 다음의 것을 위해 필요하다.
입력 : 인입 버텍스 위치, 노말 벡터 및 버텍스 색상.
입력 : 사용 가능한 액티브 텍스쳐 채널 각각에 대한 텍스쳐 좌표
입력 : 탄젠트 공간 범프 매핑이 선택된 경우, 버텍스 당 모델 좌표 탄젠트 벡터가 필요하다.
입력 : 모델-, 뷰- 및 프로젝션 매트릭스.
입력 : 액티브 텍스쳐 채널 각각에 대한 텍스쳐 매트릭스.
입력 : 고라우드 쉐이딩이 선택된 경우, 모든 액티브 광원을 완벽하게 기술하기 위해 필요한 모든 파라미터.
입력 : 고라우드 쉐이딩이 선택된 경우, 현재 재질 특징(색상, 광택 등)을 기술하기 위해 필요한 모든 파라미터.
입력 : 택스쳐 좌표를 필요로 하는 텍스쳐 채널에 대한 임의의 텍스쳐 좌표 생성 파라미터.
출력 : 출력되는 변환된 버텍스 위치, 변환되지 않은 버텍스 위치, 변환된 노말 벡터.
출력 : 탄젠트 공간 범프 매핑이 선택된 경우, 뷰-좌표 탄젠트 벡터가 벡터 쉐이더로부터 출력되어야 한다.
출력 : 변환된 텍스쳐 좌표.
출력 : 조명 연산을 통해, 또는 다른 방식으로 산출된, 현재 버텍스와 연관된 색상.
- 프로그램 본체 소스 코드를 생성
인입 버텍스 및 노말은 고유 모델 좌표로부터 뷰 좌표계로 변환된다(단계 510).
해당 생성 환경(texgen environment)이 요청하는 경우, 텍스쳐 좌표가 액티브 텍스쳐 채널 각각에 대하여 생성된다(단계 515).
모든 채널의 텍스쳐 좌표는 각각의 텍스쳐 매트릭스에 의해 변환된다(단계 520).
고라우드 조명이 선택된 경우, 각 광원에 대하여 조명 코드가 생성된다(단계 525). 각 광원으로부터의 산출된 조명 기여도(lighting contribution)는 합산되고, 적절한 출력 쉐이더 파라미터로 공급되어 그래픽 파이프라인으로 전달된다.
고라우드 조명이 선택된 경우, 상기 과정으로부터의 버텍스 당 조명 코드의 산출물은 추후의 처리를 위해 단편 쉐이더에게 전달된다(단계 532).
퐁 조명이 선택된 경우, 버텍스 당 색상 값이 추후 처리를 위해 단편 쉐이더로 전달된다(단계 530).
조명 동작이 전혀 수행되지 않는 경우, 버텍스 당 색상은 최종 색상으로서 전달된다(단계 535). 버텍스 당 색상이 존재하지 않는 경우, 현재 확산 재질 색상(diffuse material color)이 대신 전달된다(단계 540).
호스트 시스템에 적절한 방식으로, 또한 당업자에게 알려진 바와 같이, 입력 쉐이더 파라미터 각각에 제한되는 값들을 포함하여 버텍스 쉐이딩 코드를 호스팅 그래픽 시스템에 전송한다(단계 545).
도 6은 바람직한 실시예에 따른, 단편 쉐이더를 생성하기 위한 프로세스의 흐름도를 도시한다.
단편 쉐이더를 생성하기 위해, JtShaderEffect는 다음의 광범위한 단계를 수행한다.
상기의 정보를 이용하여 쉐이더 프리앰블 및 파라미터 리스트를 생성한다(단계 605). 쉐이더 파라미터는 다음의 것들을 위해 필요하다. 이들 입력 중 많은 수가 해당 버텍스 쉐이더로부터의 출력에 직접 한정된다는 사실을 주목한다.
입력 : 인입 버텍스 위치, 노말 벡터 및 버텍스 색상.
입력 : 사용 가능한 액티브 텍스쳐 채널 각각에 대한 텍스쳐 좌표.
입력 : 탄젠트 공간 범프 매핑이 선택된 경우, 버텍스 쉐이더로부터 버텍스 당 뷰 좌표 탄젠트 벡터가 요구된다.
입력 : 모델-, 시각- 및 프로젝션 매트릭스.
입력 : 퐁 쉐이딩이 선택된 경우, 모든 액티브 광원을 완전히 기술하기 위해 필요한 모든 파라미터
입력 : 퐁 쉐이딩이 선택된 경우, 현재 재질 특성(색상, 광택 등)을 기술하기 위해 필요한 모든 파라미터
입력 : 각 액티브 텍스쳐 이미지에 대한 핸들(handle) 또는 샘플러(sampler).
입력 : 환경 맵이 선택된 경우, 환경 맵 반사도(reflectivity).
입력 : 탄젠트 공간 범프 매핑이 선택된 경우, 범프 맵에 적용되는 범피니스(bumpiness).
출력 : 조명 연산을 통해, 또는 다른 방식으로 산출된, 현재 픽셀과 연관된 색상.
다음과 같이 프로그램 본체 소스 코드를 생성한다:
범프 매핑이 선택된 경우, 특유한 범프 맵을 액세스하는 코드를 생성하여 그를 기존 노말 벡터를 섭동시키는데 이용하거나, 완전히 새로운 노말 벡터를 생성하는데 이용한다(단계 610). 이와 같이 섭동된 노말 벡터는 이하에서 수행되는 임의의 조명 연산에 직접 공급된다.
퐁 조명이 선택된 경우, 각각의 광원에 대하여 조명 코드가 생성된다(단계 615). 각 광원으로부터의 산출된 조명 기여도는 합산되고, 추후 텍스쳐링 코드에 의해 수정될 수 있는, 가동 임시 단편 색상 변수(running temporary fragment color variable)가 된다.
고라우드 조명이 선택된 경우, 버텍스 쉐이더로부터 전달된 버텍스 당 색상 값이 그대로 복제된다(단계 620). 조명 동작이 전혀 수행되지 않는 경우, 버텍스 당 색상이 그대로 복제된다.
텍스쳐링이 존재하는 경우, 요청된 텍셀을 액세스하는 코드를 생성하고, 그를 텍스쳐 블렌딩 모드(texture blending mode)에 따라 상기 연산된 가동 임시 단편 색상과 블렌딩한다(단계 625). 본 단계는 환경 맵으로 매핑된 텍스쳐에 대한 쉐이더 소스 코드를 생성하는 단계를 포함한다.
최종적인 가동 임시 단편 색상 값은 그래픽 파이프라인 백엔드에 의한 추후 처리를 위해 적절한 출력 쉐이더 파라미터로서 저장된다(단계 630).
호스트 시스템에 적절한 방식으로, 또한 당업자에게 알려진 바와 같이, 각 입력 쉐이더 파라미터에 한정되는 값을 포함하여 호스팅 그래픽 시스템으로 버텍스 쉐이딩 코드를 전송한다(단계 635).
단순하고 명료한 설명을 위해, 본 발명을 이용하는데 적절한 모든 데이터 프로세싱 시스템의 전체 구조 및 동작을 모두 본 명세서에 도시하거나 기재하지 않았음을 당업자라면 인지할 것이다. 대신, 본 발명에 있어서 특유하거나 본 발명을 이해하는데 필요한 만큼의 데이터 프로세싱 시스템만이 도시되고 기술되었다. 데이터 프로세싱 시스템(100)의 나머지 구조 및 동작은 당 분야에 공지된 다양한 현재의 구현 및 실무 중 임의의 것을 따를 수 있다.
완전히 기능적인 시스템의 경우에 있어서 본 발명을 기술하였으나, 당업자라 면 본 발명의 메카니즘의 적어도 일부가 다양한 형태로 장치 사용 가능 매체(machine usable medium) 내에 포함된 명령의 형태로 분산될 수 있으며, 본 발명은 상기 분산을 실제로 수행하는데 이용되는 특정 유형의 명령 또는 신호 전달 매체에 관계없이 동일하게 적용됨을 인지할 것이다. 장치 사용 가능 매체의 예로, ROM(read only memory) 또는 EEPROM(erasable electrically programmable read only memory)와 같은 비휘발성, 하드 코드 타입의 매체(hard-coded type medium)와, 플로피 디스크, 하드 디스크 드라이브 및 CD-ROM 또는 DVD와 같은 사용자 기록 가능 타입의 매체, 그리고 디지털 및 아날로그 통신 링크와 같은 전송 타입 매체(transmission type medium)를 들 수 있다.
본 발명의 전형적인 실시예가 상세하게 기술되었으나, 당업자라면 넓은 견지에서 본 발명의 원리와 범주를 벗어나지 않고 본 명세서에 개시된 발명을 다양하게 변경, 치환, 수정 및 향상시킬 수 있음을 이해할 것이다.
본 출원에 있어서의 설명은, 임의의 특정 구성요소, 단계 또는 기능이 청구의 범위에 포함되어야만 하는 필수적인 것을 의미하는 것으로 해석되어서는 아니되며, 발명적 요지의 범주는 오직 청구항에 의해서만 규정된다. 또한 이들 청구항은 정확히 "~를 위한 수단"이라는 단어가 붙지 않는 한 35 USC §112 6항을 인용하고자 하는 것이 아니다.

Claims (12)

  1. 버텍스 쉐이더에 대한 쉐이더 프리앰블(preamble) 및 파라미터 리스트를 생성하는 단계;
    버텍스 및 노말의 좌표를 변환하는 단계;
    선택적으로, 텍스쳐 좌표를 생성하고 텍스쳐 좌표를 변환하는 단계;
    상기 변환된 텍스쳐 좌표와 상기 변환된 버텍스 및 노말 좌표에 대응하여, 적어도 일부의 쉐이더 파라미터에 대한 값을 포함하는 버텍스 쉐이더 소스 코드를 그래픽 프로세싱 유닛에 전송하는 단계;
    를 포함하는, 버텍스 쉐이더에 대한 코드 생성 방법.
  2. 제1항에 있어서,
    고라우드 쉐이딩(Gouraud shading)이 선택된 경우 각각의 광원(lighting source)에 대한 조명 코드(lighting code)를 생성하는 단계를 더 포함하는 코드 생성 방법.
  3. 제1항에 있어서,
    퐁 조명(Phong lighting)이 선택된 경우 버텍스 당 색상(per-vertex color) 값을 단편 쉐이더(fragment shader)로 전달하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  4. 제1항에 있어서,
    조명 동작이 수행되지 않는 경우 버텍스 당 색상 값을 최종 색상으로 단편 쉐이더에 전달하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  5. 단편 쉐이더에 대한 쉐이더 프리앰블 및 파라미터 리스트를 생성하는 단계;
    단편 색상 값을 저장하는 단계;
    파라미터 값을 포함하는 단편 쉐이딩 코드를 전송하는 단계
    를 포함하는 단편 쉐이더에 대한 코드 생성 방법.
  6. 제5항에 있어서,
    범프 매핑(bump mapping)이 선택된 경우 범프 맵을 이용하여 새로운 노말 벡터를 산출하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  7. 제5항에 있어서,
    퐁 쉐이딩(Phong shading)이 선택된 경우 각각의 광원에 대한 조명 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  8. 제5항에 있어서,
    고라우드 조명(Gouraud lighting)이 선택된 경우 인터폴레이트 된(interpolated) 버텍스 당 색상 값을 최종 단편 색상으로 전달하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  9. 제5항에 있어서,
    텍스쳐링이 존재하는 경우, 모든 텍스쳐를 액세스하고 산출된 텍셀을 서로 블렌딩하며 또한 조명된 단편 색상(lit fragment color)과 블렌딩하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  10. 제5항에 있어서,
    환경 맵 텍스쳐(environment map texture)를 액세스하고 환경 맵 반사도 파라미터에 따라 조명된 단편 색상에 대하여 산출된 텍셀을 블렌딩하는 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  11. 제1항에 있어서,
    환경 맵 텍스쳐를 액세스하고 환경 맵 반사도 파라미터에 따라 조명된 단편 색상 및 기타 비환경 텍셀(non-environment texel)에 대하여 산출된 텍셀을 블렌딩하는 추가 코드를 생성하는 단계를 더 포함하는 코드 생성 방법.
  12. 복수의 쉐이더 파라미터 값 및 제1 객체 속성을 포함하는 쉐이더 코드를 수신하는, 제1 쉐이더 코드 수신 단계;
    변경된 객체 속성을 수신하는 단계;
    상기 쉐이더 코드 및 상기 변경된 객체 속성에 따라 갱신된 쉐이더 코드를 생성하는 단계;
    상기 갱신된 쉐이더 소스 코드를 그래픽 프로세싱 유닛으로 전송하는 단계
    를 포함하고, 상기 변경된 객체 속성은 상응하는 제1 객체 속성을 대신하여 사용되는, 쉐이더에 대한 코드를 재생성하는 방법.
KR1020077011298A 2004-10-20 2005-10-19 동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램 제품 KR101184500B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US62063804P 2004-10-20 2004-10-20
US60/620,638 2004-10-20
US11/047,375 US20060082577A1 (en) 2004-10-20 2005-01-31 System, method, and computer program product for dynamic shader generation
US11/047,375 2005-01-31
PCT/US2005/037585 WO2006044963A1 (en) 2004-10-20 2005-10-19 System, method, and computer program product for dynamic shader generation

Publications (2)

Publication Number Publication Date
KR20070084346A true KR20070084346A (ko) 2007-08-24
KR101184500B1 KR101184500B1 (ko) 2012-09-19

Family

ID=35519971

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077011298A KR101184500B1 (ko) 2004-10-20 2005-10-19 동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램 제품

Country Status (5)

Country Link
US (1) US20060082577A1 (ko)
EP (1) EP1803098A1 (ko)
JP (1) JP4809359B2 (ko)
KR (1) KR101184500B1 (ko)
WO (1) WO2006044963A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173546B1 (ko) * 2020-04-28 2020-11-03 주식회사 라이언게임즈 게임 객체 렌더링 방법 및 장치

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
US8223845B1 (en) 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US7499051B1 (en) * 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
US7444583B2 (en) * 2005-05-27 2008-10-28 Microsoft Corporation Standard graphics specification and data binding
JP2007066064A (ja) * 2005-08-31 2007-03-15 Sega Corp 画像生成装置及びプログラム
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
KR100898991B1 (ko) * 2006-12-02 2009-05-27 한국전자통신연구원 3차원 그래픽 시스템의 쉐이더 제공 및 변환 장치
WO2008066292A1 (en) * 2006-12-02 2008-06-05 Electronics And Telecommunications Research Institute Apparatus for providing and transforming shader of 3d graphic system
US8296738B1 (en) * 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US8276129B1 (en) 2007-08-13 2012-09-25 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US7843462B2 (en) * 2007-09-07 2010-11-30 Seiko Epson Corporation System and method for displaying a digital video sequence modified to compensate for perceived blur
US7932902B2 (en) * 2007-09-25 2011-04-26 Microsoft Corporation Emitting raster and vector content from a single software component
US8203558B2 (en) * 2008-01-28 2012-06-19 Apple Inc. Dynamic shader generation
US8866827B2 (en) * 2008-06-26 2014-10-21 Microsoft Corporation Bulk-synchronous graphics processing unit programming
US8581912B2 (en) 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
JP2011086235A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd 画像処理装置、画像処理方法および画像処理プログラム
KR20110066011A (ko) * 2009-12-10 2011-06-16 한국전자통신연구원 이미지 특성 추출을 이용한 유사 쉐이더 검색장치 및 방법
US8677186B2 (en) 2010-12-15 2014-03-18 Microsoft Corporation Debugging in data parallel computations
US8997066B2 (en) 2010-12-27 2015-03-31 Microsoft Technology Licensing, Llc Emulating pointers
US9412193B2 (en) * 2011-06-01 2016-08-09 Apple Inc. Run-time optimized shader program
US8539458B2 (en) 2011-06-10 2013-09-17 Microsoft Corporation Transforming addressing alignment during code generation
US9754392B2 (en) 2013-03-04 2017-09-05 Microsoft Technology Licensing, Llc Generating data-mapped visualization of data
US9070227B2 (en) 2013-03-04 2015-06-30 Microsoft Technology Licensing, Llc Particle based visualizations of abstract information
US20140354658A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Shader Function Linking Graph
US10255651B2 (en) * 2015-04-15 2019-04-09 Channel One Holdings Inc. Methods and systems for generating shaders to emulate a fixed-function graphics pipeline
US10102662B2 (en) 2016-07-27 2018-10-16 Advanced Micro Devices, Inc. Primitive culling using automatically compiled compute shaders
US12056790B2 (en) 2020-01-31 2024-08-06 Qualcomm Incorporated Methods and apparatus to facilitate a dedicated bindless state processor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793374A (en) * 1995-07-28 1998-08-11 Microsoft Corporation Specialized shaders for shading objects in computer generated images
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6664963B1 (en) * 2000-05-31 2003-12-16 Nvidia Corporation System, method and computer program product for programmable shading using pixel shaders
US6850244B2 (en) * 2001-01-11 2005-02-01 Micron Techology, Inc. Apparatus and method for gradient mapping in a graphics processing system
US6614431B1 (en) * 2001-01-18 2003-09-02 David J. Collodi Method and system for improved per-pixel shading in a computer graphics system
US6657624B2 (en) * 2001-12-21 2003-12-02 Silicon Graphics, Inc. System, method, and computer program product for real-time shading of computer generated images
US7159212B2 (en) * 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US7355597B2 (en) * 2002-05-06 2008-04-08 Brown University Research Foundation Method, apparatus and computer program product for the interactive rendering of multivalued volume data with layered complementary values
US6809732B2 (en) * 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7176917B1 (en) * 2002-08-09 2007-02-13 Avid Technology, Inc. Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface
US20050140672A1 (en) * 2003-02-18 2005-06-30 Jeremy Hubbell Shader editor and compiler
US6954211B2 (en) * 2003-06-30 2005-10-11 Microsoft Corporation Hardware-accelerated anti-aliased graphics
EP1494175A1 (en) * 2003-07-01 2005-01-05 Koninklijke Philips Electronics N.V. Selection of a mipmap level
US7523406B2 (en) * 2003-07-22 2009-04-21 Autodesk Inc. Dynamic parameter interface

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173546B1 (ko) * 2020-04-28 2020-11-03 주식회사 라이언게임즈 게임 객체 렌더링 방법 및 장치

Also Published As

Publication number Publication date
JP2008517403A (ja) 2008-05-22
KR101184500B1 (ko) 2012-09-19
JP4809359B2 (ja) 2011-11-09
EP1803098A1 (en) 2007-07-04
US20060082577A1 (en) 2006-04-20
WO2006044963A1 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
KR101184500B1 (ko) 동적 쉐이더 생성을 위한 시스템, 방법 및 컴퓨터 프로그램 제품
JP4705357B2 (ja) ナチュラルライティング環境における物体のリアルタイムのリライティングに対する堅牢なサンプリングのためのシステムおよび方法
US9019269B1 (en) Interactive rendering of building information model data
US7427986B2 (en) Hybrid hardware-accelerated relighting system for computer cinematography
US8319784B2 (en) Fast reconfiguration of graphics pipeline state
EP3385913B1 (en) Systems and methods for a ray tracing shader api
US8203558B2 (en) Dynamic shader generation
US8134551B2 (en) Frontend for universal rendering framework
US20090222469A1 (en) Method for creating graphical materials for universal rendering framework
PT1376472E (pt) Sistemas e métodos para efectuar uma amostragem controlável de textura
JP5873672B2 (ja) 仮想環境のポイントにおいて受光された光の量の推定方法
Merlo et al. 3D model visualization enhancements in real-time game engines
Wang et al. Automatic shader simplification using surface signal approximation
US20140267340A1 (en) Material representation data structure and method of representing a material for digital image synthesis
KR102339020B1 (ko) 가상 컨텐츠 데이터 기반 현실적 장면 이미지의 객체 변환 렌더링 방법 및 그 장치
CN116912388A (zh) 贴图处理方法、装置、计算机可读存储介质和电子装置
US7685371B1 (en) Hierarchical flush barrier mechanism with deadlock avoidance
Ament et al. GPU-accelerated visualization
Ragan-Kelley Practical interactive lighting design for RenderMan scenes
US7733349B1 (en) Device, method, and system for generating per-pixel light values using texture parameters
JP4219090B2 (ja) コンピュータグラフィックスシェーディングおよびアニメーションにおいて照明を提供するための方法、システム、およびコンピュータプログラムプロダクト
Souza An Analysis Of Real-time Ray Tracing Techniques Using The Vulkan® Explicit Api
Christensen Global illumination for professional 3D animation, visualization, and special effects
Sung et al. Design and implementation of the Maya Renderer
Ilett Lighting and Shadows

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee