KR100908147B1 - 조명 변경에 의한 프레임 리렌더 가속화 - Google Patents

조명 변경에 의한 프레임 리렌더 가속화 Download PDF

Info

Publication number
KR100908147B1
KR100908147B1 KR1020070074728A KR20070074728A KR100908147B1 KR 100908147 B1 KR100908147 B1 KR 100908147B1 KR 1020070074728 A KR1020070074728 A KR 1020070074728A KR 20070074728 A KR20070074728 A KR 20070074728A KR 100908147 B1 KR100908147 B1 KR 100908147B1
Authority
KR
South Korea
Prior art keywords
frame
render
block
information
subject matter
Prior art date
Application number
KR1020070074728A
Other languages
English (en)
Other versions
KR20080010346A (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 KR20080010346A publication Critical patent/KR20080010346A/ko
Application granted granted Critical
Publication of KR100908147B1 publication Critical patent/KR100908147B1/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

Landscapes

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

Abstract

그래픽 프레임들의 리렌더링의 가속화를 위한 실시예들이 개시된다.
리렌더링, 프레임, 오브젝트, 그리드 캐시, 오브젝트-인덱싱된 캐시

Description

조명 변경에 의한 프레임 리렌더 가속화{RE-RENDER ACCELERATION OF FRAME WITH LIGHTING CHANGE}
본 명세서에 개시된 발명은 컴퓨터 그래픽 렌더링에 관한 것이며, 보다 구체적으로는 프레임의 리렌더링(re-rendering)을 가속화하는 것에 관한 것이다.
영화 시각 효과 및/또는 애니메이션 등의 고품질 렌더링의 경우, 단일 프레임의 렌더는 수십분 혹은 심지어 수시간까지 걸릴 수 있다. 기술자가 다른 완성된 장면으로 조명 변경하기를 원할 경우, 생성 프로세스에서 상당한 병목현상이 발생할 수 있다. 이 프로세스는, 모든 변경(광을 배치할 곳, 광의 색, 광이 그림자를 만들어야 하는지, 얼마나 흐린 그림자가 되어야 하는지 등)에 대해, 조명 기술자 및/또는 감독에게 그러한 변경이 보이도록 리렌더를 수행해야 하기 때문에, 매우 시간 소모적일 수 있다. 그 프로세스의 시간 소모성 외에도, 조명 설계의 반복성이 있다. 조명 기술자 및/또는 감독이 결과에 만족할 때까지, 변경을 하고, 프레임을 리렌더링하고, 결과를 관찰하고, 더 많은 변경을 하고, 프레임을 리렌더링하는 등을 한다. 각 렌더가 완료되는 데에는 많은 시간이 걸릴 수 있기 때문에, 조명 프로세스는 매우 시간 소모적이며 비효율적일 수 있다.
본 발명은 본 명세서의 결론부에 구체적으로 지시되며 명백히 청구된다. 그러나, 청구 대상인 구성 및 동작 방법 둘 모두는, 목적, 특징 및 이점과 함께, 첨부 도면을 참조하여 다음 상세한 설명을 읽어 보면, 가장 잘 이해될 수 있다.
이하의 상세한 설명에서는, 청구 대상의 철저한 이해를 제공하기 위해 다수의 특정 세부사항들을 설명한다. 그러나, 본 기술분야의 숙련자라면 청구 대상이 이러한 특정 세부사항들이 없어도 실시될 수 있음을 이해할 것이다. 그 밖의 경우들에서, 공지되어 있는 방법들, 절차들, 구성요소들 및/또는 회로들에 대해서는 상세히 설명하지 않는다.
상기 지적된 바와 같이, 본 기술분야의 상태가 갖는 난점들, 구체적으로는, 예컨대 재조명 영역에서의 난점들은 매우 시간 소모적이며, 비효율적인 재조명된 프레임의 리렌더링을 포함할 수 있다. 따라서, 재조명된 프레임의 리렌더링을 가속화할 수 있는 기술들 및/또는 시스템들이 필요하게 된다.
조명 변경에 의한 프레임의 리렌더링을 가속화하는 방법의 실시예에 따르면, 프레임의 하나 이상의 3차원(3D) 오브젝트들에 대응하는 정보를 오브젝트-인덱싱된 캐시 내에 저장할 수 있다. 3D 오브젝트들은 복수의 포인트들로 이산화될 수 있다. 캐시는 프레임의 리렌더에 사용될 수 있는 중간 및/또는 최종 셰이딩 값들을 포함할 수 있다. 조명 기술자 등의 사용자가 조명 변경을 지정할 수 있다. 복수 의 포인트들이 존재한다면, 그들 중 어느 것이 그 지정된 조명 변경에 의해 영향을 받는지에 관한 판정을 행할 수 있다. 조명 변경에 의해 영향을 받는 포인트들에 대하여, 어느 셰이딩 동작들이 조명 변경을 구현하기 위해서 재계산되어 하는지에 관한 판정이 행해질 수 있다. 그 프레임은 재계산된 셰이딩 동작들과 오브젝트-인덱싱된 캐시에 저장된 중간 및/또는 최종 셰이딩 값들의 적어도 서브세트의 조합을 이용하여 리렌더링될 수 있다.
오브젝트에 의해 인덱싱된 캐시 내에 중간 셰이딩 결과들을 저장하고, 그 프레임을 리렌더링하기에 적절한 중간 셰이딩 결과들을 이용함으로써, 재조명 동작 동안 상당한 시간 절약을 실현할 수 있다. 이러한 상당한 시간 절약은, 애니메이터, 조명 기술자 등이 이용하기에 상당히 유리할 수 있는 굉장히 개선된 상호 작용적인 재조명 프로세스를 제공할 수 있다.
본 명세서 전반에 걸쳐 참조된 "일 실시예" 또는 "실시예"는, 그 실시예와 관련하여 설명된 구체적인 특징들, 구성들 또는 특성들이 청구 대상의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서의 여러 곳에 배치된 "일 실시예에서" 및/또는 "일 실시예"의 구문의 모습은, 반드시 동일한 실시예에 대한 모든 것을 지칭하는 것은 아니다. 더구나, 구체적인 특징들, 구성들 및/또는 특성들은 하나 이상의 실시예들에 조합될 수 있다.
본 명세서에 참조된 "명령어들"은 하나 이상의 논리 동작들을 나타내는 표현 들에 관한 것이다. 예를 들어, 명령어들은 예컨대, 프로세서 등의 하나 이상의 데이터 오브젝트들 상에서 하나 이상의 동작들을 실행하기 위해 머신에 의해 해석가능한 "머신-판독가능"이 될 수 있다. 그러나, 이는 단지 명령어들의 예일 뿐이며, 청구 대상이 이러한 측면에 제한되는 것은 아니다. 또 다른 예에서, 본 명세서에 참조된 명령어들은 부호화된 커맨드들을 포함하는 커맨드 세트를 갖는 프로세서 또는 그 밖의 프로세싱 회로에 의해 실행가능한 부호화된 커맨드들에 관한 것일 수 있다. 이러한 명령어는 프로세서 또는 프로세싱 회로로 이해되는 기계어의 형태로 부호화될 수 있다. 또한, 이들은 단지 명령어의 예일 뿐, 청구 대상이 이러한 측면에 제한되는 것은 아니다.
본 명세서에 참조된 "저장 매체"는 하나 이상의 머신들에 의해 인식가능한 표현들을 유지할 수 있는 매체에 관한 것이다. 예를 들어, 저장 매체가 머신-판독가능 명령어들 및/또는 정보를 저장하기 위한 하나 이상의 저장 장치들을 포함할 수 있다. 이러한 저장 장치들은 예를 들어, 자기, 광학 및/또는 반도체 저장 매체를 포함하는 몇몇 매체 유형들 중 임의의 것을 포함할 수 있다. 그러나, 이들은 단지 저장 매체의 예일 뿐, 청구 대상이 이러한 측면에 제한되는 것은 아니다.
본 명세서에 참조된 "로직"은 하나 이상의 로직 동작들을 수행하기 위한 구성에 관한 것이다. 예를 들어, 로직은 적어도 부분적으로 하나 이상의 입력 신호들에 기초하는 하나 이상의 출력 신호들을 제공하는 회로를 포함할 수 있다. 그러한 회로는 디지털 입력 신호를 수신하고 디지털 출력 신호를 제공하는 유한 상태 기계, 또는 하나 이상의 아날로그 입력 신호들에 응답하여 하나 이상의 아날로그 출력 신호들을 제공하는 회로를 포함할 수 있다. 이러한 회로는, 예를 들어, ASIC(application specific integrated circuit) 및/또는 FPGA(field programmable gate array)에 제공될 수 있다. 또한, 로직은 이러한 머신-판독가능 명령어들을 실행하기 위해 프로세서 또는 그 밖의 프로세싱 회로와 조합하여 저장 매체에 저장된 머신-판독가능 명령어들을 포함할 수 있다. 그러나, 이들은 단지 로직을 제공할 수 있는 구성들의 예일 뿐, 청구 대상이 이러한 측면에 제한되는 것은 아니다.
구체적으로 달리 설명되지 않는 한, 다음 논의로부터 명백한 바와 같이, 본 명세서 전체에서, "프로세싱", "컴퓨팅", "계산", "선택", "형성", "가능", "금지", "식별", "시작", "쿼리", 취득", "유지", "표현", "수정", "수신", "송신", "저장", "인증", "권한부여", "호스팅", "판정" 등과 같은 용어들을 이용한 설명들은, 물리적, 전자적 및/또는 자기적 양, 및/또는 컴퓨팅 플랫폼의 프로세서들, 메모리들, 레지스터들 및/또는 그 밖의 정보 저장, 송신, 수신 및/또는 디스플레이 디바이스들 내의 그 밖의 물리적 양으로 나타낸 데이터를 조작 및/또는 변형하는, 컴퓨터 또는 그와 유사한 전자 컴퓨팅 디바이스 등의 컴퓨팅 플랫폼에 의해 수행될 수 있는 동작들 및/또는 프로세스들을 지칭한다. 따라서, 컴퓨팅 플랫폼은 데이터를 신호의 형태로 프로세싱 및/또는 저장하는 기능을 포함하는 시스템 또는 디바이스를 지칭한다. 그러므로, 이러한 정황에서, 컴퓨팅 플랫폼은 하드웨어, 소프트웨어, 펌웨어 및/또는 이들의 임의의 조합을 포함할 수 있다. 또한, 구체적으로 달리 설명되지 않는 한, 흐름도 등을 참조하여 본 명세서에 기술된 프로세스는 또한 전체적으로 또는 부분적으로 컴퓨팅 플랫폼에 의해 실행 및/또는 제어될 수 있다.
본원에서 언급하는 "컴퓨터 프로그램"은 실행시, 컴퓨터, 컴퓨팅 장치 및/또는 머신을 특정한 방식으로 동작시키는 조직화된 명령어 리스트에 관한 것이다. 여기서, 예컨대, 컴퓨터 프로그램은 하나 이상의 소망하는 작업을 수행하도록 실행 가능한 머신 판독 가능한 명령어를 포함할 수 있다. 특정한 일실시예에서는, 이것으로 청구 대상을 제한하는 것은 아니지만, 컴퓨터 프로그램은 프로그램 실행시 입력 데이터에 적어도 일부 기초한 출력 데이터를 제공할 수 있도록 입력 데이터와 출력 데이터를 규정할 수 있다. 그러나, 이는 단지 컴퓨터 프로그램의 예일 뿐이며, 이것으로 청구 대상을 제한하는 것은 아니다.
이후의 상세한 설명 및/또는 청구 범위에서, 용어 "연결(coupled)" 및/또는 "접속(connected)", 그리고 이들의 파생어가 사용될 수 있다. 특정 실시예들에 있어서, "접속"은 2 이상의 요소가 서로 직접적으로 물리적 및/또는 전기적으로 접촉한다는 것을 나타내는 경우에 사용할 수 있다. "연결"은 2 이상의 요소가 직접적으로 물리적 및/또는 전기적으로 접촉한다는 것을 의미할 수 있다. 그러나, "연결"은 2 이상의 요소가 서로 접촉하는 것이 아니라, 서로 협동 및/또는 상호 작용한다는 것을 의미할 수도 있다.
본원에서 사용하는 바와 같이, 용어 "및/또는(and/or)"은 "논리곱(and)", "논리합(or)", "배타적 논리합(exclusive-or)", "하나(one)", "전부가 아닌 일부(some, but not all)", "둘 중 어느 쪽도 아님(neither)", 및/또는 "둘 다(both)"를 의미할 수 있으며, 이것으로 청구 대상의 범위를 제한하는 것은 아니다.
본원에서 사용하는 바와 같이, 용어 "렌더(render)" 및/또는 "렌더링(rendering)" 및/또는 "리렌더(re-render)" 및/또는 "리렌더링(re-rendering)"은 컴퓨팅 플랫폼 내에 저장된 3차원 데이터에 기초하여 이미지를 생성하는 폭넓은 범위의 기술들 중 어느 하나를 포함하는 것으로 한다. 상기 용어들은 소프트웨어 프로그램에 의해 모델로부터 이미지를 생성하는 프로세스를 의미할 수도 있지만, 이것으로 청구 대상의 범위를 제한하는 것은 아니다. 모델은 데이터 구조에 의한 3D 오브젝트의 기술(description)을 포함할 수 있다. 모델은 기하(geometry), 시점(viewpoint), 표면(surface) 및/또는 조명(lighting) 정보를 포함할 수 있다. 이는 단지 모델의 예일 뿐이며, 이것으로 청구 대상의 범위를 제한하는 것은 아니다. 상기 용어들은 비디오 편집 파일에서의 영향을 계산하여 최종 비디오 출력을 생성하는 프로세스를 기술하는 경우에 사용될할 수도 있다.
또한, 본원에서 사용하는 바와 같이, 용어 "셰이더(shader)" 및/또는 "셰이딩(shading)"은 오브젝트 또는 이미지의 표면 특성을 판정하기 위해서 3D 컴퓨터 그래픽에서 이용하는 임의의 프로세스를 나타낼 수 있다. 셰이더는 광 흡수, 확산, 텍스처 맵핑, 반사, 굴절, 셰도잉(shadowing) 등에 관한 정보를 이용할 수 있다. "셰이딩"은 오브젝트 표면의 컬러 및 휘도가 어떻게 조명에 의해 변화하는지를 나타낼 수도 있다. 이는 단지 셰이딩의 예일 뿐이며, 이것으로 청구 대상의 범위를 제한하는 것은 아니다.
또한, 본원에서 사용하는 바와 같이, 용어 "래스터화(rasterization)" 및/또는 "래스터화하다(rasterize)"는 3D 오브젝트를 최종적으로 디스플레이 장치에 출 력할 픽셀로 변환하는 임의의 프로세스를 나타낼 수 있다. 하나 이상의 실시예에 있어서, 래스터화 및/또는 재래스터화 동작은 그래픽 프로세싱 유닛에 의해 행해질 수 있으나, 이것으로 청구 대상의 범위를 제한하는 것은 아니다.
추가로, 본원에서 사용하는 용어 "캐시(cache)"는 렌더링 프로세스에서 이용하는 정보를 저장할 수 있는 임의의 데이터 구조를 포함하는 것으로 나타낼 수 있다. "오브젝트 인덱싱된(object-indexed)" 캐시는 오브젝트 단위로 인덱싱될 수 있는 데이터 구조를 포함할 수 있다. 즉, 캐시에 저장된 정보는 그 정보가 어떤 오브젝트와 관련되어 있는지에 따라 편성 및/또는 액세스될 수 있다. 본원에서 사용하는 오브젝트-인덱싱된 캐시는 "그리드 캐시"라고 할 수도 있다. 용어 "그리드"는 테셀레이션(tessellation) 또는 다이싱(dicing) 동작을 따르는 오브젝트와 관련된 포인트의 그리드를 나타낼 수 있다.
하나 이상의 실시예에 있어서, 오브젝트-인덱싱된 캐시는 각 렌더링 결과가 그 결과의 계산에 영향을 미칠 수 있는 0 이상의 입력 값들의 리스트를 수반할 수 있는 렌더링 결과(아마도 오브젝트 셰이딩 결과)를 보유할 수 있는 임의의 데이터 구조를 포함할 수 있다. 캐시에 저장된 입력 값들과 일치하는 입력 값들에 대해 특정한 렌더링 결과가 필요한 경우에는, 캐시로부터 정확한 결과를 신속히 검색하여, 그 결과에 대한 재계산 시간을 절감할 수 있다.
하나 이상의 실시예에 있어서, 메모리 검색 동작은 오브젝트-인덱싱된 캐시에 캐싱되지 않아도 된다. 최종 및/또는 중간 렌더링 결과가 캐시될 수도 있다. 일실시예에 있어서, 오브젝트-인덱싱된 캐시는 사전에 계산된 렌더링 결과들을 포 함하는 테이블을 포함할 수 있다. 프레임 렌더 중에 렌더링 결과가 필요한 경우에는, 그 필요한 결과가 캐시에 존재하는지를 판정할 수 있다. 그 필요한 결과가 캐시에 존재하지 않는 경우에는, 그 필요한 결과를 계산하고 그 계산한 결과를 후속 렌더링 동작에서 이용할 수 있도록 캐시에 저장할 수 있다.
일실시예에 있어서, 캐시 공간이 한정되도록 메모리 자원이 존재하는 경우에는, 신 정보를 저장하기 위해서 캐시에 저장된 구 정보를 폐기할 수 있다. 또한, 일부 실시예들에 있어서, 저장된 정보의 유효성에 영향을 미치는 이벤트가 발생한 경우에는 캐시 엔트리를 무효화할 수 있다. 그 무효화된 정보는 폐기될 수 있으며, 후속 렌더링 동작에서 필요한 경우에는 재계산될 수 있다. 예컨대, 조명 파라미터가 변경된 경우에, 그 변경에 의해 영향을 받은 캐싱된 결과를 폐기할 수 있다. 리렌더는 조명 파라미터 변경 후에 일어날 수 있으며, 이전에 폐기된 결과를 재계산할 수 있다. 일실시예에 있어서, 각 캐시 엔트리는 오브젝트 이름과 오브젝트 렌더링 결과(예컨대 컬러 등)는 물론이고, 또한 그 결과가 의존하는 입력 정보 리스트를 저장할 수 있다. 또한, 하나 이상의 실시예에 있어서, 계산된 렌더링 결과를 포함하는 오브젝트-인덱싱된 캐시는 시스템 메모리 및/또는 그래픽 메모리에 저장될 수 있다. 오브젝트-인덱싱된 캐시는 또한 디스크 드라이브와 같은 불휘발성 저장 장치에 저장될 수 있다. 상기한 것은 오브젝트-인덱싱된 캐시의 편성 방법, 오브젝트-인덱싱된 캐시에 저장될 수 있는 정보의 종류, 그러한 정보의 렌더링 프로세스에서의 이용 방법에 대한 예일 뿐이며, 이것으로 청구 대상의 범위를 제한하는 것은 아니다.
도 1은 컴퓨팅 플랫폼(100)의 일실시예의 블록도이다. 컴퓨팅 플랫폼(100)은 CPU(110)와, CPU(110)에 연결된 메모리 제어기 허브(120)를 포함할 수 있다. 메모리 제어기 허브(120)는 또한 시스템 메모리(130), 그래픽 프로세싱 유닛(GPU)(150) 및 입출력 허브(140)에 연결된다. GPU(150)는 또한 CRT 디스플레이, 평판 LCD 디스플레이, 프로젝터, 또는 다른 종류의 디스플레이 장치를 포함할 수 있는 디스플레이 장치(160)에 연결된다. 또한 GPU(150)에는 그래픽 메모리(170)가 연결된다. 컴퓨팅 플랫폼(100)은 또한 입출력 허브(140)에 연결될 수 있는 하나 이상의 저장 매체 판독 장치(도시 생략)를 포함할 수 있다.
특정한 구성 요소들의 구성을 갖는 예시적인 시스템(100)을 도시하였으나, 넓은 범위의 구성들 중 어느 것을 이용한 다른 실시예들도 가능하다. 예컨대, 복수의 CPU 및/또는 GPU를 이용하는 실시예들이 가능하다. 또한, 본원에 기재한 실시예들은 컴퓨팅 플랫폼, 게임 콘솔 및 장치 등을 포함하나 이에 제한되지 않는 넓은 범위의 전자 장치들 중 어느 것에 이용할 수 있다. 또한, 일부 실시예들에 있어서, 복수의 컴퓨팅 플랫폼을 함께 동작하도록 연결하여 본원에 기재한 재조명 가속화 기술을 행하도록 할 수 있다.
도 2는 광원(220, 230, 240)과, 복수의 삼차원 오브젝트(250, 260, 270)를 포함하는 예시적인 화면(scene)을 도시한다. 화면(200)은 3D 그래픽 화면을 나타내는 것을 의미하지만, 도시 및 설명의 편의상 이차원으로 도시한다. 또한, 도 2에는 카메라(210)(시점을 나타냄)와, 래스터화 프로세스 중에 3D 오브젝트가 수학적으로 투영될 수 있는 이미지면(280)이 도시되어 있다. 절두체선(211)은 화 면(200)에 대한 관찰중인 절두체의 경계를 나타낸다.
이 예시적인 화면에 있어서, 3D 오브젝트(250, 260, 270)는 포인트의 메시 그리드를 생성하도록 테셀레이팅(다이싱)될 수 있다. 각종 오브젝트의 포인트들은 이산화될 수 있다. 포인트(251, 262, 264)를 포함하는 일부 예시적인 포인트들을 도 2에 도시하였다.
일반적으로, 렌더링은 2 부분의 프로세스로서 간주될 수 있다. 1 부분의 경우, 가시도(visibility) 문제를 해결할 수 있다. 예컨대, 소정의 시점에 있어서, 카메라(210)에 의해 설명되는 이 예의 경우, 일부 오브젝트들 또는 오브젝트들의 일부가 폐색될 수 있다. 마찬가지로, 각종 광원은 각 오브젝트의 각 포인트에 영향을 줄 수도 주지 않을 수도 있다. 가시도 문제의 해결은 오브젝트들 및 광원들의 위치 및 관계와 또한 시점을 고려할 수 있다. 예컨대, 오브젝트(260) 상의 수개의 포인트들은 하나 이상의 광원에 보이지 않을 수 있다. 예컨대 포인트(262, 264)를 보면, 포인트(262)는 광(230)에 보이지 않는 반면에, 포인트(264)는 보인다. 광(230)이 위치 A로부터 위치 B로 이동하면, 그 광원에 노출되는 포인트들의 세트가 변경될 수 있다. 광(230)이 위치 B에 있으면, 포인트(262)는 광(230)에 보이나 포인트(264)는 보이지 않는다.
이 예시적인 화면에 있어서, 카메라의 시점으로부터 폐색되는 오브젝트들(250, 260, 270)의 일부를 파선으로 나타내었다. 관찰중인 절두체의 밖에 있는 오브젝트들의 일부는 마찬가지로 파선으로 표기한다. 오브젝트에 의해 차단되는 광선의 일부도 파선으로 표기한다.
렌더 프로세스의 제2 부분의 경우, (이미지면(280)에 투영되는) 각 픽셀에 대한 컬러를 판정/계산할 수 있다. 셰이딩 프로세스는 각종 오브젝트의 표면 상의 컬러 및/또는 텍스처 패턴, 강도, 위치 및 컬러 또는 광원, 오브젝트들의 상대적 접근도 등에 관한 정보를 고려할 수 있다. 물론, 이것들은 렌더링 프로세스에 이용할 수 있는 정보의 종류의 예일 뿐이다.
도 3은 상호 작용적인 재조명 프로세스의 일실시예를 도시한다. 블록 310에서, 프레임을 렌더링할 수 있다. 블록 320에서, 프레임, 이 예에서는 하나 이상의 조명 파라미터에 수정을 할 수 있다. 조명 기술자, 애니메이터 또는 다른 사용자 등의 기술자에 의해 지정될 수 있다. 블록 330에서는, 렌더링을 위해서 수정된 조명 파라미터를 포함하는 프레임을 준비하는 프로세싱을 할 수 있으며, 블록 310에서 수정 및 처리된 광 정보를 이용하여 새로운 렌더가 발생할 수 있다. 그 사이클은 기술자가 결과에 만족할 때까지 원하는 만큼 반복될 수 있다.
도 4는 프레임의 재조명을 가속화하기 위한 방법의 예시적인 실시예에 대한 흐름도이다. 블록 410에서, 프레임의 렌더가 발생할 수 있다. 이 렌더는 프레임의 초기 렌더를 포함할 수 있다. 초기 렌더의 경우, 어떤 오브젝트 또는 오브젝트들의 부분이 보이는지를 판정하고, 또한 다른 렌더링 동작을 행할 수 있다. 초기 렌더는 또한 장면 데이터의 초기 가져오기(import)를 포함할 수 있다. 초기 렌더의 일부 또는 모든 결과는 하나 이상의 그리드 캐시(450)에 저장될 수 있다.
블록 420에서는, 하나 이상의 조명 파라미터를 수정할 수 있다. 블록 430에서는 블록 440에서 리렌더링하기 위한 프레임을 준비하는 프로세싱을 할 수 있다. 그러나, 리렌더의 경우, 단 하나 또는 일부 광이 이동되거나 달리 변경되면, 그 변경에 의한 영향을 받는 계산만을 재수행한다. 계산이 조명 변경에 의한 영향을 받지 않으면, 하나 이상의 그리드 캐시(450)에 저장된 정보를 이용함으로써, 리렌더 수행에 필요한 계산량을 대폭 절감할 수 있다. 예컨대, 변경이 단지 하나 이상의 광만(카메라 이동 없음)을 수반하기 때문에, 초기 렌더에서 행하는 가시도 동작을 재수행할 필요는 없다.
따라서, 본 실시예 및 다른 실시예들에 있어서, 초기의 렌더(어떤 오브젝트들이 보이며 보이지 않는지에 관한 정보는 하나 이상의 그리드 캐시들에 저장될 수 있음)에서 보이지 않았던 오브젝트들은 고려하지 않고, (전체 장면을 다시 내보내기하거나 재판독하지 않고) 단지 리렌더에 대한 광들을 재송신함으로써, 또한 조명 변경에 의해 영향을 받는 동작들만이 재계산이 요구되며 다른 동작들은 이전 렌더로부터의 결과들을 재이용할 수 있도록 각종 셰이딩 동작들의 값들을 캐시함으로써 작업 및 시간이 절약될 수 있다. 이러한 방식으로, 크게 향상된 성능 및/또는 효율을 갖는 충분히 특징적인(full-featured), 대규모의 상호 작용적인 리렌더가 가능하다. 본 실시예 및 다른 실시예들에 있어서, 가속화된 리렌더는 풀 렌더(full render)와 픽셀-포-픽셀(pixel-for-pixel)로 동일할 수 있다(결과적으로 이미지들은 동일할 수 있다).
도 5는 프레임의 재조명(re-lighting)을 가속화하는 방법의 추가적인 실시예를 나타내는 흐름도이다. 본 실시예에 있어서, 블록 510에서 장면 데이터가 판독된다. 블록 520에서, 장면의 오브젝트들 상에 다이싱(테설레이팅(tessellating)) 동작들이 수행될 수 있다. 블록 530에서 셰이딩 동작들이 수행될 수 있으며, 블록 540에서 이미지가 래스터화될 수 있다. 블록 550에서, 하나 이상의 조명 또는 셰이딩 파라미터들에 대한 변경들이 지정될 수 있다. 그 후, 프로세싱은 블록 530으로 복귀할 수 있다. 단계 530의 모두를 재수행하기보다는 변경된 파라미터들에 의해 필요해지는 동작들이 재수행되며, 이에 따라 시간을 절약하고 효율을 향상시킬 수 있다. 청구 대상에 따른 실시예는 블록들 510-550의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 510-550의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
도 6은 프레임의 리렌더링을 가속화하는 방법의 예시적인 실시예의 흐름도이다. 블록 610에서, 프레임의 렌더와 관련된 오브젝트 정보가 오브젝트-인덱싱된 캐시에 저장될 수 있으며, 블록 620에서, 조명 파라미터가 수정될 수 있다. 블록 630에서, 프레임은 오브젝트-인덱싱된 캐시에 저장된 오브젝트 정보의 적어도 서브세트를 이용하여 리렌더링될 수 있다. 청구 대상에 따른 실시예는 블록들 610-630의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 610-630의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
도 7은 프레임의 재조명 및 리렌더링을 가속화하는 방법의 추가적인 실시예의 흐름도이다. 블록 710에서, 복수의 포인트들이 이산화될 수 있으며, 복수의 포인트들은 프레임의 하나 이상의 오브젝트들에 대응한다. 블록 720에서, 조명 파라미터가 수정될 수 있다. 블록 730에서, 복수의 포인트 중 어느 포인트가 조명 파 라미터의 수정에 의해 영향을 받는지에 관하여 판정이 행해질 수 있으며, 블록(740)에서, 영향을 받은 포인트들에 대해 어떤 동작들을 재계산할 지에 관한 판정이 행해질 수 있다. 블록 750에서, 프레임은 재래스터화될 수 있다. 청구 대상에 따른 실시예는 블록들 710-750의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 710-750의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
도 8은 오브젝트-인덱싱된 캐시 내의 프레임의 렌더와 관련된 오브젝트 정보를 저장하는 단계를 포함하는 프레임의 재조명을 가속화하는 방법의 예시적인 실시예를 나타내는 흐름도이다. 블록 810에서, 오브젝트 정보는 오브젝트-인덱싱된 캐시에 저장될 수 있다. 오브젝트 정보는 중간 셰이딩 결과들을 포함할 수 있다. 블록 820에서, 조명 파라미터가 수정될 수 있다. 블록 830에서, 조명 파라미터의 수정에 의해 영향받은 오브젝트 정보가 재계산될 수 있다. 블록 840에서, 프레임은 재계산된 오브젝트 정보 및 캐시된 중간 셰이딩 결과들의 조합을 이용하여 리렌더링 될 수 있다. 청구 대상에 따른 실시예는 블록들 810-840의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 810-840의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
도 9는 오브젝트 상의 포인트에 관련된 복수의 광에 대한 정보의 예시적인 블록들을 나타내는 도면이다. 본 실시예에 있어서, 예시적인 포인트는 포인트(251)를 포함한다. 도 9에 나타낸 정보의 블록들은, 오브젝트(250), 및 특히 캐시에 저장될 수 있는 포인트(251)와 관련된 가능성 있는 정보를 나타낸다. 블록 910은 표면 패턴 정보를 포함할 수 있다. 광 블록 920은 광원(220)에 관한 정보를 포함할 수 있으며, 광 블록 930은 광원(230)에 관한 정보를 포함할 수 있으며, 광 블록 940은 광원(240)에 관한 정보를 포함할 수 있다. 광원들의 각각은 그림자 맵 정보와 관련될 수 있다. 조합 유닛(950)은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 도 2를 다시 참조하면, 장면(200)의 초기 렌더에 후속하여, 광원(230)이 위치 A에서 위치 B로 이동될 수 있다. 본 예에서는, 광 변경에 후속하는 장면의 리렌더를 수행함에 있어 광 변경에 의해 영향을 받는 포인트들 및 계산들이 재계산된다. 본 예에서, 포인트(251)에 대해, 표면 패턴 정보 및 광(220, 240)에 대한 정보는 광 변경에 의해 영향을 받지 않는다. 따라서, 블록들 910, 920, 940으로부터의 정보가 조합 유닛(950)에 제공될 수 있다. 그러나, 광원(230)과 관련된 광 블록 930은, 광 변경에 의해 영향을 받는 정보를 포함할 수 있으며, 블록 930에서 저장된 정보의 적어도 서브세트가 재계산될 수 있다. 재계산된 정보는 포인트(251)에 대한 컬러 데이터를 생성할 수 있는 조합 유닛(950)에 제공될 수 있다. 도 9에 도시된 예시적인 데이터 구성은 예시적인 구성에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
도 10은 그리드 캐시(1000)의 예시적인 실시예의 블록도이다. 전술한 바와 같이, "그리드 캐시"라는 용어는 하나 이상의 오브젝트 및/또는 오브젝트의 포인트들에 따라 인덱싱될 수 있는 데이터 구조를 일컫는 용어일 수 있다. 본 예에서, 그래드 캐시(1000)는 셰이더 입력 데이터(1010)와 셰이더 출력 및 중간 결과 데이터(1020)를 포함할 수 있다. 셰이더 입력 데이터(1010)는 오브젝트의 위치, 통상 의 정보, 컬러 파라미터들 등과 관련한 정보를 포함할 수 있다. 셰이더 출력 및 중간 결과 데이터(1020)는 컬러 정보, 광 제어 파라미터 정보, 고가의 계산 결과들, 검사 정보 등을 포함할 수 있다. 본 명세서에 기술된 실시예들에 관련된 캐시들은 그래픽 메모리, 시스템 메모리, 및/또는 예컨대, 하드 드라이브 등의 불휘발성 저장장치, 또는 이들 조합들에 저장될 수 있다. 물론, 이것은 그리드 캐시의 하나의 가능한 일례에 불과하며, 청구 대상의 범위는 이러한 측면에 한정되는 것은 아니다.
일 실시예에 있어서, 개개의 광들 및/또는 미리 조명된 표면 패턴의 최종 결과들을 캐싱하는 것 외에도, 개개의 셰이더 동작들의 결과들이 캐시될 수 있다. 또한, 일 실시예에 있어서, 캐시될 각종 명령어들이 소프트웨어 개발자에 의해 지정될 수 있다. 몇몇 실시예에 있어서, 캐시될 각종 명령어들이 사용자에 의해 지정될 수도 있다. 어떤 종류의 명령어들을 캐시할 지에 관한 판정들은 사용자의 선호도 및/또는 컴퓨팅 플랫폼 자원 이용가능성(예컨대, 이용가능한 메모리)에 기초할 수 있다. 그러한 판정들은, 아마도 이용가능한 자원들에 기초하여 미리 결정되거나, 또는 동적으로 또한/또는 자동적으로 행해질 수 있다. 몇몇 실시예에 있어서, 특히 시간 및/또는 자원을 소비하기 때문에 고가인 명령어들을 캐시하는 것이 장점일 수 있다. 예를 들어, 텍스처 검색 동작들의 결과들이 캐시될 수 있다. 또한, 몇몇 실시예에 있어서, 특정 명령어들 및/또는 특정 파라미터들이 캐시될 수 있다. 이들은 캐시될 수 있는 정보의 종류 및/또는 판정들이 행해질 수 있는 방법에 관한 예들에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니 다.
하나 이상의 실시예에 있어서, 그리드 포인트에 대한 명령어의 입력 파라미터들의 전부를 합성(concatenating)함으로써 생성되는 명칭에 의해 캐시들 및/또는 캐시 엔트리들이 식별될 수 있다. 그러나, 이는 캐시 또는 캐시 엔트리가 식별될 수 있는 방법의 일례에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
몇몇 실시예들은 캐시될 동작들의 우선 순위가 부여된 리스트를 채용할 수 있다. 이 리스트는 높은 우선 순위 동작들로부터 낮은 우선 순위 동작들로 범위가 놓여져 있다. 높은 우선 순위의 동작들은 계산하는 데에 특히 시간이 소요되는 동작들을 포함할 수 있으며, 낮은 우선 순위의 동작들은 비교적 신속하게 재계산되는 동작들을 포함할 수 있다. 높은 우선 순위 레벨과 낮은 우선 순위 레벨 간에는 넓은 범위의 중간 우선 순위 레벨들이 존재할 수 있다. 우선 순위가 부여된 동작들의 이 리스트는, 캐시에 대한 계산-대-메모리 트레이드오프(computation-versus-memory tradeoff)들의 슬라이딩 스케일을 포함할 수 있다. 예를 들어, 메모리 자원이 부족해짐에 따라, 보다 많은 낮은 우선 순위의 동작들이 캐시되기 보다는 자동적으로 재계산될 수 있다. 재계산할 동작들 및 캐시할 동작들에 대한 판정은 자동적으로 이루어질 수 있거나, 또는 다른 실시예에서는 사용자가, 캐시할 동작 및 재계산할 동작의 우선 순위 레벨을 지정할 수 있다. 사용자는, 자신이 캐시할 동작이 어느 것인지에 관한 선호도를 나타낼 수 있게 하는 소프트웨어 어플리케이션 내의 메뉴 항목이 제공될 수 있다.
도 11은 우선 순위가 부여된 리스트의 항목들 중 어느 것이 캐시될 것인지를 판정하는 방법에 관한 예시적인 실시예의 흐름도이다. 블록(1110)에서, 렌더 동작과 관련된, 우선 순위가 부여된 리스트의 잠재적으로 캐시가능한 항목들 중 어느 것이 캐시될 것인지에 관한 판정이 행해진다. 전술한 바와 같이, 상기 판정은 메모리 등의 컴퓨팅 플랫폼 자원들의 이용가능성을 포함하되, 이에 한정되는 것은 아닌 고려사항들의 범위에 기초할 수 있다. 본 문맥 내의 "항목들" 이라는 용어는, 전술한 정보 유형을 포함하여, 캐시 내에 저장될 수 있는 임의의 정보를 포함하는 것을 의미한다. (시간 및/또는 자원을 소비하는) 고비용의 동작들은 최고 우선 순위가 부여되거나 캐시될 수 있는 반면, 낮은 우선 순위의 동작들(용이하게 재계산 가능한 동작들)은, 예컨대 메모리 자원들이 결핍되는 몇몇 환경 하에서 캐시되지 않을 수 있다.
블록 1120에서, 캐싱을 위해 선택되는 우선 순위가 부여된 항목들은 오브젝트-인덱싱된 캐시에 저장된다. 블록 1130에서, 조명 파라미터가 수정될 수 있으며, 블록 1140에서, 오브젝트-인덱싱된 캐시 내에 저장된 항목들의 적어도 서브세트를 이용하여 프레임이 리렌더링될 수 있다. 청구 대상에 따른 실시예는 블록들 1110-1140의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 1110-1140의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
어떤 환경 하의 캐시들 및/또는 캐시 엔트리들은, 예컨대 그림자 맵 등의 외부 파일에 적어도 부분적으로 의존할 수 있다. 일 실시예에 있어서, 외부 파일이 수정되는 경우, 상기 외부 파일에 의존하는 명령어들이 자동적으로 재계산될 수 있다.
도 12는 수정된 외부 파일에 의존하는 오브젝트 정보를 재계산하는 방법의 예시적인 실시예를 나타내는 흐름도이다. 블록 1210에서, 오브젝트-인덱싱된 캐시에 저장된 오브젝트 정보가 외부 파일에 의존하는지 여부에 관한 판정이 행해질 수 있다. 오브젝트 정보가 외부 파일에 의존하지 않는 경우, 프로세싱은 블록 1240으로 진행한다. 오브젝트-인덱싱된 캐시에 저장된 오브젝트 정보가 외부 파일에 의존하는 경우, 블록 1220에서 외부 파일이 수정되었는지에 관한 판정이 행해진다. 외부 파일이 수정되지 않은 경우, 프로세싱은 블록 1240으로 진행한다. 외부 파일이 수정된 경우, 블록 1230에서 수정된 파일에 의존하는 오브젝트 정보가 재계산된다. 블록 1240에서, 캐시 내에 저장된 정보 및 재계산된 셰이딩 동작들의 조합을 이용하여 프레임이 렌더링된다. 청구 대상에 따른 실시예는 블록들 1210-1240의 모두, 또는 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들 1210-1240의 순서는 단지 예시적인 순서에 불과하며, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다.
조명 기술자 또는 다른 사용자가 광들 또는 장면의 다른 요소들에 대한 변경을 행하는 경우, 이는 주로 기술자가 그 결과들에 만족하기 전에 광 또는 다른 요소들에 대한 몇몇 변경들을 행하는 경우이다. 기술자가 변경들 사이에서 최대 충실도의 렌더를 대기해야만 하는 경우, 프로세스는 매우 시간 소비적일 수 있다. 본 명세서에 기술된 리렌더 가속화 기술들 및 방법들은 매우 짧은 시간을 소요하는 프로세스를 행할 수 있다. 몇몇 실시예에 있어서, 상기 프로세스는 장면의 점진적인 개선에 의해 보다 가속화될 수 있다. 본 명세서에 사용된 바와 같이, "점진적인 개선"이라는 용어는, 초기에 최대 충실도보다 낮은 충실도로 장면을 표시한 후 장면의 높은 충실도 또는 최대 충실도의 표현을 갖도록 표시하는 기술들을 포함하는 것을 의미한다. 점진적인 개선에 의해, 기술자는 최근의 변경들이 만족스러울 가능성이 있는지의 여부를 장면의 낮은 충실도 버전으로부터 판정할 수 있다. 이 판정은 높은 충실도 또는 최대 충실도 버전을 대기하기보다는, 매우 적시에 이루어질 수 있다.
예시적인 실시예에서, 낮은 충실도 표현은 최대 충실도의 렌더에 대한 경우보다 조악하게 다이싱된 장면에 기초한 것일 수 있다. 즉, 낮은 충실도 표현에 대한 장면의 각 오브젝트는 최대 충실도의 렌더에 대한 경우일 때보다 더 적은 수의 포인트들로 이산화될 수 있다. 일 실시예에서, 낮은 충실도 장면의 최후의 래스터화는 최대 픽셀 해상도에서 일어날 수 있다. 다른 실시예들에서, 낮은 해상도 렌더는 픽셀 해상도를 제한함으로써 및/또는 예를 들어, 안티-에일리어싱 및/또는 블러링과 같은 일부 기능들을 제거함으로써 더 빨라질 수 있다. 낮은 충실도 렌더에 대한 최대 픽셀 해상도를 유지함으로써, 낮은 픽셀 해상도 디스플레이의 고유의 농담이 고르지 않은 외양(blocky appearance)을 피할 수 있어서, 기술자에게 최대 충실도 렌더가 어떻게 보일지에 대한 더 나은 사상을 줄 수 있다.
일부 실시예들에서, 낮은 해상도 렌더가 디스플레이될 수 있고, 이어서 높은 충실도 렌더가 낮은 해상도 디스플레이의 상부에 놓일 수 있다. 전체 디스플레이 가 높은 충실도 버전으로 갱신될 때까지, 높은 충실도 영역들이 이용가능해짐에 따라, 높은 충실도 렌더는 낮은 충실도 버전을 영역별로 대체할 수 있다. 예를 들어, 일 실시예에서, 디스플레이는 위에서 아래로, 또는 아래에서 위로, 또는 왼쪽에서 오른쪽으로, 또는 오른쪽에서 왼쪽으로 갱신될 수 있고, 또는 그 갱신이 기술자에 의해 지정된 영역에서 처음 발생할 수 있다. 물론, 이들은 낮은 충실도 디스플레이가 높은 충실도 디스플레이로 어떻게 갱신될 수 있는지에 대한 단순한 예시일 뿐이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다. 또한, 일부 실시예들에서, 리렌더 프로세스(낮은 충실도이던지 높은 충실도이던지)는 사용자에 의해 임의의 시점에서 중단될 수 있다.
본 명세서에서 사용된 "영역" 또는 "영역들"의 용어는 장면, 프레임, 및/또는 디스플레이의 임의의 서브세트를 의미한다. 영역들은 광범위한 형상들 및/또는 크기들 중 임의의 것을 포함할 수 있다. 영역들은 픽셀들, 오브젝트들, 및/또는 그외의 데이터 구조들을 포함할 수 있다.
일부 실시예들에서, 사용자는 장면 또는 프레임의 어떤 영역이 먼저 리렌더링될 것인지를 지정할 수 있다. 예를 들어, 사용자는 프레임의 사각형 부분이 먼저 리렌더링되도록 지정할 수 있다. 대안적으로, 다른 실시예에서, 사용자는 프레임의 좌표를 (아마도 포인팅 디바이스를 사용하여 디스플레이 상에 포인트를 선택함으로써) 지정할 수 있고 선택된 좌표를 직접 둘러싸는 영역들은 렌더링될 수 있고 이후에 그 좌표로부터 나선형으로 확장하는 프레임의 다른 영역들이 렌더링될 수 있다. 일 실시예에서, 프레임의 낮은 우선 순위 렌더가 전체 프레임에 대하여 수행될 수 있고, 이후에 프레임의 높은 우선 순위 렌더가 그 영역 또는 사용자에 의해 지정된 포인트에서 시작될 수 있다. 그러나, 이들은 프레임의 영역들이 렌더링되는 순서의 단순한 예시일 뿐이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
본 명세서에 기술된 기술들 및 방법들에 의해 가능하게 된 리렌더 가속화 특성들의 이점을 이용하기 위해, 임의의 특별한 장면의 두 개의 사본이 저장될 수 있다. 한 사본은 장면의 낮은 충실도 버전을 나타내고 다른 카피는 높은 및/또는 최대 충실도 버전을 나타낼 수 있다. 사본들의 각각은, 장면의 가속화된 리렌더링을 가능하게 하기 위하여 상술된 바와 같이 오브젝트-인덱싱된 캐시들을 보유할 수 있다.
상기 예시적인 실시예에서는 두 단계의 충실도가 (두 개의 대응하는 장면사본들과 함께) 논의되었지만, 청구 대상의 범위는 그에 제한되지 않고, 다른 실시예들은 두 개의 충실도 단계들보다 더 적거나 또는 더 많은 단계들을 이용할 수 있다.
도 13은 낮은 충실도 렌더를 수행하기 위한 방법의 예시적인 실시예의 흐름도이다. 블록 1310에서, 프레임의 낮은 충실도 렌더와 관련된 오브젝트 정보가 제1 오브젝트-인덱싱된 캐시에 저장된다. 블록 1320에서, 프레임의 높은 충실도 렌더와 관련된 오브젝트 정보가 제2 오브젝트-인덱싱된 캐시에 저장된다. 조명 파라미터는 블록 1330에서 수정될 수 있고, 블록 1340에서 프레임의 낮은 충실도 렌더는 제1 오브젝트-인덱싱된 캐시에 저장된 오브젝트 정보의 적어도 서브세트를 이용 하여 수행될 수 있다. 청구 대상에 따른 실시예는 블록들 1310-1340의 모두, 그 이상, 또는 그 이하를 포함할 수 있다. 또한, 블록들(1310-1340)의 순서는 단순히 하나의 예시적인 순서이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
도 14는 장면의 렌더를 점진적으로 개선하는 방법에 대한 예시적인 실시예의 흐름도이다. 블록 1410에서, 장면의 낮은 충실도 및 높은 충실도의 버전이 저장된다. 장면의 두 버전들과 관련된 오브젝트 정보는 오브젝트-인덱싱된 캐시들에 저장될 수 있다. 블록 1420에서, 디스플레이 영역 우선 순위 정보는 사용자로부터 수신될 수 있다. 사용자로부터의 우선 순위 정보는 어떤 영역 또는 영역들이 높은 충실도로 먼저 렌더링될 것인지에 대한 표시를 포함할 수 있다. 영역들에 우선 순위를 부여하는 일부 가능한 방식들이 상술되었지만, 청구 대상의 범위는 이러한 측면에 제한되는 것은 아니다. 장면의 낮은 충실도 렌더는 블록 1430에서 수행되고, 블록 1440에서 최고 우선 순위 영역이 높은 충실도로 렌더링될 수 있다. 블록 1450에서, 다음으로 낮은 우선 순위 영역이, 또한 높은 충실도로 렌더링될 수 있다. 블록 1460에서 최종 영역이 렌더링되었는지에 대한 판정이 행해질 수 있다. 그렇지 않다면, 프로세싱은 다음으로 낮은 우선 순위 영역이 렌더링되는 블록 1450으로 되돌아간다. 최종 영역이 렌더링되었다면, 프로세싱은 종료한다. 청구 대상에 따른 실시예는 블록들 1410-1460의 모두, 그 이상 또는 그 이하를 포함할 수 있다. 또한, 블록들 1410-1460의 순서는 단순히 예시적인 순서이고, 청구 대상은 이러한 측면에 제한되지 않는다.
상기에서 논의된 바와 같이, 일부 실시예들에서 사용자는 장면의 어느 영역 이 먼저 렌더링될 것인지, 또는 어느 영역이 높은 우선 순위에 있는지를 나타낼 수 있다. 일부 실시예들에서, 사용자는 렌더를 중단하고 다음으로 렌더링될 영역을 선택 및/또는 재선택할 수 있다. 예를 들어, 사용자는 조명 파라미터에 대한 변경을 할 수 있고, 사용자는 프레임의 특정 영역에서 조명 변경으로 인한 효과를 보기를 원할 수 있다. 사용자는 처음에 먼저 렌더링될 영역을 선택할 수 있다. 일부 실시예들에서, 사용자는 다음으로 렌더링될 프레임의 다른 영역을 이후에 선택할 수도 있다. 즉, 사용자는 현재의 렌더링 동작을 중단하고 프레임의 다양한 영역들에 대해 렌더링이 발생할 순서에 다시 우선 순위를 다시 부여할 수 있다.
프레임의 다양한 영역들에 대한 렌더링이 발생하는 순서에 다시 우선 순위를 부여하는 것 이외에, 하나 이상의 실시예에서 사용자는 임의의 포인트에서 렌더를 중단하고 조명 파라미터들을 변경할 수 있다. 그 후 렌더 동작은 일부 실시예들에서 자동적으로 재시작할 수 있고 다른 실시예들에서는 수동으로 재시작할 수 있으며, 다시 사용자는 프레임의 영역들이 렌더링되는 순서에 우선 순위를 부여하는 능록을 가질 수 있다.
일 실시예에서, 프레임의 렌더는, 그것이 초기 렌더이건 또는 리렌더이건, 임의의 시점에서 중단될 수 있다. 예를 들어, 일부 실시예들에서, 하나 이상의 오브젝트-인덱싱된 캐시들이 프레임의 초기 렌더 중에 초기화될 수 있다. 예시적인 실시예에서, 사용자는 모든 캐시들이 생성되기 전에 초기 렌더 중에 조명 변경을 할 수 있다. 조명 파라미터들의 변경에 응답하여, 프레임의 초기 렌더(이 예에서는 부분적인 렌더) 중에 생성된 캐시들을 이용하여 리렌더 동작이 발생할 수 있다. 리렌더 동작은 프레임의 초기 렌더 중에 개시되지 않은 추가의 캐시들을 초기화할 수도 있다.
하나의 예로, 프레임의 렌더(초기 렌더 또는 리렌더일 수 있음)는, 상기에서 설명된 바와 같이, 장면의 낮은 충실도 표현으로 시작할 수 있다. 사용자는 조명의 변경들이 바람직할 수 있는 낮은 충실도의 디스플레이를 식별할 수 있다. 사용자는 최대 충실도 렌더가 완료되기를 기다리지 않고 변경들을 행할 수 있다. 일 실시예에서, 사용자는 요구되는 것만큼 자주 프레임의 렌더를 중단할 수 있고, 렌더 동작은 조명 파라미터들의 변경에 응답하여 자동으로 재시작할 수 있다. 일 실시예에서, 렌더 동작은 수동으로 재시작될 수 있다. 일부 실시예들에서 및 상기 언급된 바와 같이, 어느 동작들이 조명 파라미터 변경에 의해 영향을 받는지에 대한 판정이 행해질 수 있고, 그러한 동작들은 재계산될 수 있는 한편, 영향을 받지 않은 동작들의 결과들은 적절한 캐시로부터 재검색될 수 있다. 일부 예들에서, 하나 이상의 동작들에 대하여 캐시가 생성되기 전에 사용자가 렌더를 중단하는 경우, 그러한 동작들도 역시 계산될 수 있고 적절한 오브젝트-인덱싱된 캐시들이 생성될 수 있다. 물론, 이것들은 단순히 프레임의 렌더를 중단하는 예시일 뿐이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
도 15는 낮은 충실도 및 높은 충실도에 의해 렌더링된 장면을 묘사하는 예시적 디스플레이(1500)의 도면이다. 이 예에서, 장면은, 아마도 상기 논의된 실시예들에 따라, 낮은 충실도 프로세스를 사용하여 초기에 렌더링되었다. 이 예에서 높은 충실도 렌더는, 도면에서 수평 점선(1515) 및 관련된 화살표들로 도시된 바와 같이, 장면의 상부에서 시작하여 디스플레이의 아래로 진행하면서 수행될 수 있다. 이 예에서, 선(1515) 위의 영역(1510)은 높은 충실도로 리렌더링된다. 선(1515) 아래의 역역(1520)은 이전에 낮은 충실도로 렌더링된 영역을 나타내고 높은 충실도 렌더를 기다리고 있다. 디스플레이(1500)의 빗금친 부분들은 높은 충실도 렌더로부터 발생한 증가된 표면 상세를 가진 영역을 묘사하는 것을 의미한다.
이전에 논의된 바와 같이, 일부 실시예들에서 사용자는 렌더링 프로세스에 다시 우선 순위를 부여하거나 또는 렌더링 프로세스를 중단할 수 있다. 예를 들어, 사용자는 하나 이상의 조명 파라미터들에 대한 변경을 행할 수 있다. 이 예에서, 현재 처리중인 렌더는 조명 파라미터의 변경에 응답하여 정지하고 재시작할 수 있다. 대안적으로, 다른 예로서, 사용자는 디스플레이의 특정 영역에 집중하는 것을 바랄 수 있고 다른 영역들이 렌더링되기 전에 그 영역에 대한 높은 충실도의 렌더가 수행되도록 지시할 수 있다. 도 15에 도시된 예에서, 높은 충실도의 렌더가 진행중인 동안, 사용자는 영역(1522)을 선택할 수 있다. 영역(1522)은 높은 우선 순위 영역으로서 취급될 수 있고 낮은 충실도 디스플레이 영역(1520) 내의 나머지 영역들 전에 프로세싱될 수 있다. 일단, 영역(1522)이 높은 충실도로 렌더링되면, 본 예에서는 렌더링 프로세스가 위에서 아래로의 패턴을 지속할 수 있다. 사용자는 이후에 위에서 아래로의 패턴을 다시 중단하는 것을 바랄 수 있고 다음으로 프로세싱될 영역(1524)을 선택할 수 있다. 사용자는 임의의 횟수만큼 렌더 프로세스를 계속 중단할 수 있고, 조명 파라미터들을 포함하나 이에 한정되지 않는 임의의 범위의 파라미터들에 대한 변경을 행하거나, 또는 디스플레이의 영역들이 렌더링될 순서에 다시 우선 순위를 매길 수 있다.
도 15의 예는 영역들의 위에서 아래로의 프로세싱을 도시하지만, 그리고 사용자에 의해 선택된 높은 우선 순위 영역들은 사각형의 영역들로 도시되지만, 이것들은 단순히 예시일 뿐이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
도 16은 프레임의 렌더를 중단하는 방법의 예시적인 실시예의 흐름도이다. 블록 1610에서, 프레임의 렌더와 관련된 오브젝트 정보는 오브젝트-인덱싱된 캐시에 저장될 수 있다. 블록(1620)에서, 렌더링 프로세스는 중단될 수 있고, 블록 1630에서, 프레임은 오브젝트-인덱싱된 캐시 내에 저장된 오브젝트 정보의 적어도 서브세트를 이용하여 리렌더링될 수 있다. 청구 대상에 따른 실시예는 블록들 1610-1630의 모두, 그 이상 또는 그 이하를 포함할 수 있다. 또한, 블록들 1610-1630의 순서는 단순히 하나의 예시적인 순서이고, 청구 대상의 범주는 이러한 측면에 제한되지 않는다.
도 17은 프레임의 렌더 및 프레임의 리렌더링을 중단하는 방법의 예시적인 실시예의 흐름도이다. 이 예에서, 프로세싱은 블록(1705)에서 시작할 수 있고, 여기서 표시된 캐시들은 현재 영역에 할당될 수 있다. 본 예에서, 렌더링될 장면은 많은 수의 영역들로 분할될 수 있다. 영역들의 각각은 그와 관련된 하나 이상의 오브젝트들을 가질 수 있다(또는 가질 수 없다). 오브젝트-인덱싱된 캐시들은, 이전에 논의된 바와 같이, 오브젝트들과 연관될 수 있다. 본 예에 대하여, 프레임의 초기 렌더(render)를 위해 캐시들이 할당될 필요가 있을 수 있다(캐시들은 프레임의 초기 렌더 전에 설정되지 않을 수 있음). 블럭 1710에서, 렌더링 프로세스의 일부로서, 아마도 중간 셰이딩 결과들을 포함하는 오브젝트 정보 및/또는 다른 정보가 계산되어 하나 혹은 그 이상의 캐시들에 저장될 수 있다. 블럭 1715에서, 모든 영역들이 렌더링되었는지 여부에 대한 판정이 이루어질 수 있다. 모든 영역들이 렌더링되었다면, 프로세싱은 종료한다. 영역들이 남아 있다면, 프로세싱은 블럭 1725로 진행할 수 있고, 거기서 사용자가 렌더 동작이 중단되는 것을 요청했는지 여부가 판정될 수 있다. 렌더가 중단되지 않았다면, 블럭 1720에서 그 다음 영역에 대하여 프로세싱이 시작할 수 있고 도 17의 예의 프로세스가 블럭 1705로 되돌아갈 수 있다.
이 예에 대해, 사용자가 렌더 동작이 중단되는 것(예를 들어, 조명 파라미터들(lighting parameters)을 변경할지 및/또는 영역들이 렌더되는 순서의 우선 순위를 다시 부여할지)을 요청했다면, 블럭 1727에서 조명 파라미터 및/또는 영역 우선 순위 정보가 사용자로부터 수신될 수 있고, 블럭 1730에서 리렌더(re-render) 프로세스가 시작할 수 있으며, 거기서 최고 우선 순위 영역에 대해 프로세싱이 일어날 수 있다. 최고 순위 영역은 미리 결정될 수 있거나 혹은 사용자에 의해 선택될 수 있거나, 혹은 이전에 중단된 렌더링 프로세스에서 렌더링될 그 다음 영역일 수 있다. 물론 이들은 어떻게 최고 우선 순위 영역이 결정될 수 있는지에 대한 단순한 예들이며, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
블럭 1735에서, 현재 영역에 대해 이전에 캐시들이 할당되지 않았다면 혹은 추가의 캐시들이 필요하다면, 캐시들이 할당될 수 있다. 앞서 논의한 바와 같이, 캐시들은 오브젝트-인덱싱된 캐시들(object-indexed caches)을 포함할 수 있다. 블럭 1740에서, 현재 영역은 캐시된 오브젝트 정보 및/또는 재계산된 정보를 이용하여 렌더링/리렌더링될 수 있고, 블럭 1745에서 계산된 및/또는 재계산된 정보가 하나 이상의 이전에 할당된 오브젝트-인덱싱된 캐시들에 캐시될 수 있다. 블럭 1750에서, 렌더될 영역들이 남았다면, 그 다음 영역의 프로세싱은 블럭 1755에서 시작할 수 있고, 렌더링 동작은 블럭 1735에서 계속될 수 있다. 렌더링될 영역들이 없다면, 프로세싱은 종료한다. 청구 대상에 따른 실시예는 블럭들 1705-1750 모두를 포함할 수 있거나 그 이상을 포함할 수 있거나, 혹은 그 이하를 포함할 수 있다. 또한, 블럭들 1705-1750의 순서는 단순히 한가지 예의 순서이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
도 18은 광원(1820), 오브젝트(1830), 및 오브젝트(1840)를 포함하는 예시적인 장면(1800)의 블록도이다. 카메라(1810)는 이 예에 대해 가능한 카메라의 시점을 예시하기 위해 묘사된다. 장면(1800)은 구들(spheres)을 포함하는 오브젝트들(1830, 1840)을 갖는 3D 그래픽 장면을 나타내려는 것이나, 본원 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
장면(1800)의 예에서, 광원(1820)은 오브젝트(1840)에 가시적일 수 있다(즉, 광을 제공할 수 있다). 또한, 이 예에 대해, 광원(1820)은 오브젝트(1830)에게 가시적이 아닐 수 있다. 그러나, 이 예에 대해서, 오브젝트(1840)로부터의 반사광(1835)은 오브젝트(1830)에 가시적일 수 있다. 앞서 논의된 바와 같이, 조명 파라미터의 변경에 응답하여, 장면의 리렌더가 일어날 수 있다. 소정의 실시예들에 대해, 조명 파라미터 변경에 의해 영향을 받는 오브젝트 정보는 재계산될 수 있고, 조명 파라미터 변경에 의해 영향을 받지 않는 오브젝트 정보는 다양한 상황들에서 오브젝트-인덱싱된 캐시들로부터 페치될 수 있다. 도 18의 예에 대해, 광원(1820)의 변경은 오브젝트(1840)와 연관된 오브젝트 정보에 영향을 줄 수 있다는 것이 명백하다. 그러나, 이 예에 대해, 오브젝트(1840)로부터의 오브젝트(1830)에 대한 반사 때문에, 오브젝트(1830)는 광원(1820)에 대한 변경에 의해 간접적으로 영향을 받을 수 있다. 그러므로, 소정의 실시예들에서, 장면의 일부 또는 모든 오브젝트들에 대해 의존성들의 리스트(혹은 둘 이상의 리스트)가 유지될 수 있다. 의존성들의 리스트는 어느 오브젝트들이 특정 오브젝트 상에 광을 반사 및/굴절할 수 있는지를 열거한 정보를 포함할 수 있다. 실시예에 대해, 의존성들의 리스트는 사용자 개입이 필요없이 자동으로 생성되고 유지될 수 있다. 소정의 실시예들에서, 사용자는 의존성들의 리스트를 생성 및/또는 수정할 수 있다.
실시예에서, 어느 오브젝트들이 다양한 광원들에 대한 변경들에 의해 직접적으로 영향을 받을 수 있는지를 기술하는 하나 이상의 리스트들이 유지될 수 있다. 어느 오브젝트들이 다양한 광원들에 대한 변경들에 의해 간접적으로 영향을 받을 수 있는지를 기술하는 하나 이상의 다른 리스트들이 유지될 수 있다. 그러한 리스트들은 장면 내의 다양한 오브젝트들 간의 의존성들에 관한 정보를 포함할 수 있다. 장면(1800)의 예에 대해, 광원(1820)에 의해 직접적으로 영향을 받는 오브젝트들을 기술한 리스트는 오브젝트(1840)를 식별하는 정보를 포함할 수 있다. 광원(1820)에 의해 간접적으로 영향을 받는 오브젝트들을 기술한 리스트는 오브젝트(1830)를 식별하는 정보를 포함할 수 있고, 오브젝트(1830)가 광원(1820)으로부 터의 광을 위해 의존하는 오브젝트로서 오브젝트(1840)를 식별하는 정보를 포함할 수도 있다. 대안적으로, 실시예에 대해, 특정 광원에 의해 간접적으로 영향을 받는 오브젝트들을 기술하는 리스트 말고, 혹은 그러한 리스트에 부가하여, 특정 오브젝트가 의존하는 다른 오브젝트들을 식별하는 정보를 포함하는 리스트가 각각의 오브젝트에 대해 유지될 수 있다. 따라서, 그러한 오브젝트(1830)와 연관된 리스트의 예에 있어서, 오브젝트(1840)가 식별될 수 있다. 또한, 소정의 실시예들에서, 하나 이상의 오브젝트들은, 오브젝트가 광을 다른 오브젝트들에 반사 및/또는 굴절하는 다른 오브젝트들의 리스팅에 연관되어 있을 수 있다. 예를 들어, 오브젝트(1840)와 연관된 그러한 리스트는 오브젝트(1830)를 식별하는 정보를 포함할 수 있다. 오브젝트들 간의 조명 의존성들에 관한 정보를 생성 및/또는 유지하는 상기 기술들 및/또는 방법들은 단순히 예들일 뿐이고, 본원 청구 대상의 범위가 이러한 측면에 제한되지는 않는다.
하나 이상의 실시예들에 대해, 하나 이상의 오브젝트들에 영향을 주는 조명 파라미터가 변경되면, 다른 오브젝트들이 반사 및/또는 굴절된 광에 의한 조명 변경에 의해 간접적으로 영향을 받을 수 있을지 여부에 대해 판정될 수 있다. 그러한 판정은 상기에서 설명된 의존성 정보를 포함하는 리스트들에 적어도 부분적으로 기초할 수 있다. 그러한 간접적인 영향이 존재하는 것으로 판정되면, 간접적으로 영향을 받는 오브젝트들에 관한 영향받은 오브젝트 정보가 리렌더 프로세스의 일부로서 재계산될 수 있다. 이러한 방식으로, 이 예에 대해, 오브젝트(1840)에 영향을 주는 조명 파라미터의 변경이 이루어지면, 오브젝트(1830)와 연관된 오브젝트 정보가 재계산될 수 있다. 하나 이상의 실시예들에 대해, 사용자는 간접적으로 영향을 받는 오브젝트 정보의 재계산을 인에이블 또는 디스에이블하기 위한 옵션을 가질 수 있다.
비록 본 명세서에서 설명된 조명 의존성들을 인식하기 위한 실시예들이 오브젝트별로(object-by-object basis) 정보를 저장하는 것으로 논의하였지만, 청구 대상의 범위는 이러한 측면에 제한되지 않는다. 예를 들어, 장면의 오브젝트들 간의 조명 의존성들을 인식하기 위한 실시예들은 픽셀-인덱싱될 수 있는 버퍼들을 이용하는 재조명 엔진들(re-lighting engines)에서 구현될 수 있다. 하나 이상의 픽셀들에 대한 그러한 버퍼들은 어느 오브젝트들이 특정 픽셀과 연관되는지에 대한 정보를 저장할 수 있다. 청구 대상에 따른 픽셀-인덱싱된 버퍼의 실시예는 장면의 오브젝트들간의 조명 의존성들을 기술하는 하나 이상의 리스트들을 유지할 수 있다.
도 19는 오브젝트들간의 조명 의존성들을 결정하기 위한 방법의 일 실시예의 흐름도이다. 블럭 1910에서, 조명 파라미터는 수정될 수 있다. 블럭 1920에서, 복수의 오브젝트 중 어느 것이 조명 파라미터의 변경에 의해 직접적으로 영향을 받을 수 있는지에 대한 판정이 이루어질 수 있다. 실시예에 대해, 오브젝트가 수정되는 광원에 가시적이면, 오브젝트는 조명 파라미터에 대한 수정에 의해 직접적으로 영향을 받는다고 말할 수 있다. 블럭 1930에서, 복수의 오브젝트 중 어느 것이 조명 파라미터의 변경에 의해 간접적으로 영향을 받을 수 있는지에 대한 판정이 이루어질 수 있다. 실시예에 있어서, 오브젝트가 조명 파라미터의 수정에 의해 직접 적으로 영향을 받는 오브젝트로부터 반사 및/또는 굴절된 광을 수신하면, 오브젝트는 조명 파라미터에 대한 수정에 의해 간접적으로 영향을 받는다고 말할 수 있다. 그러나, "직접적으로 영향을 받는다"는 기술과 "간접적으로 영향을 받는다"는 기술은 단순히 예들일 뿐이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다. 블럭 1940에서, 직접적 및 간접적으로 영향을 받는 오브젝트들과 연관된 오브젝트 정보는 재계산될 수 있다. 청구 대상에 따른 실시예는 블럭들 1910-1940 모두를 혹은 그 이상을, 혹은 그 이하를 포함할 수 있다. 또한, 블럭들 1910-1940의 순서는 단순히 한가지 예의 순서이고, 청구 대상의 범위는 이와 관련해서 제한되지 않는다.
상술된 실시예들중 적어도 일부에 대해, 조명 파라미터들에 대한 변경이 이루어질 수 있고, 프레임들은 하나 이상의 오브젝트-인덱싱된 캐시들 내에 저장된 오브젝트 정보와, 조명 파라미터의 변경에 의해 영향을 받는 오브젝트들에 대한 재계산된 정보의 조합을 이용하여 리렌더링될 수 있다. 캐시들에 저장된 정보를 이용하여, 상술한 바와 같이, 리렌더링 프로세스가 가속화될 수 있다. 이것은 장면들에 대한 심도(depth-of-field) 또는 다른 카메라/렌즈 파라미터의 변경의 경우에도 가속화된 리렌더링을 제공하는 것이 유리할 수 있다. 카메라 파라미터, 예를 들면 심도의 변경에 응답하는 가속화된 리렌더링은 기술자(artist)나 다른 사용자에게 빠른 응답을 제공할 수 있고, 기술자의 생산성을 증가시키며 컴퓨팅 플랫폼 자원들을 적게 소모할 수 있게 한다.
사용자가 장면에 대한 심도를 변경할 때 다소의 상호 작용적인 경 험(interactive experiences)을 제공하기 위한 종래의 시도들은, 아마도 심도를 이용하여 전체 렌더가 어떻게 보일지를 근사(approximate)하고자 하는 시도에서 다양한 픽셀들에 대한 블러링(blurriness)을 변경함으로써 2차원 이미지의 디스플레이를 조작하는 것을 포함할 수 있다. 앞서 논의된 바와 같이, 종래 시스템들에 대한 최대 충실도 렌더링(full-fidelity rendering)은 매우 시간 소모적 및/또는 자원 소모적일 수 있다.
청구 대상에 따라 구현된 실시예들은 앞서 논의된 바와 같이 오브젝트-인덱싱된 캐시들 내에 3차원 오브젝트 데이터를 저장할 수 있다. 하나 이상의 실시예에 대해, 카메라 파라미터에 변경이 이루어질 때, 캐시된 정보의 일부 혹은 모두가 사용될 수 있으며, 이에 의해 리렌더를 수행하기 위해 필요한 계산들의 양을 상당히 줄일 수 있다. 또한, 그래픽 프로세싱 유닛들이 래스터화 동작들에 대해 최적화될 수 있기 때문에, 새로운 카메라 파라미터를 이용하여 최대 충실도 리렌더가 가속화된 방식으로 수행될 수 있어서, 이에 의해 보다 더 상호 작용적인 경험을 기술자 또는 다른 사용자에게 제공할 수 있다.
도 20은 심도의 변경에 응답하여 프레임의 리렌더링을 가속화하기 위한 방법의 실시예의 흐름도이다. 도 20은 도 5와 일부 유사성을 공유할 수 있다. 장면 데이터는 블럭 2010에서 판독될 수 있다. 블럭 2020에서, 다이싱(dicing)(테설레이팅: tessellating) 동작들이 장면의 오브젝트들에 대해 수행될 수 있다. 블럭 2030에서, 셰이딩 동작들이 수행될 수 있고, 블럭 2040에서 이미지가 래스터화될 수 있다. 하나 이상의 실시예들에 대해, 셰이딩 동작들의 적어도 일부의 결과들은 하나 이상의 오브젝트-인덱싱된 캐시들에 저장될 수 있다. 또한, 실시예에 있어서, 래스터화는 GPU에 의해 수행될 수 있으나, 이러한 측면에 본원 청구 대상의 범위가 제한되지 않는다. 블럭 2050에서, 장면에 대한 심도가 변경될 수 있다. 도 5와 관련하여 상술한 바와 같이, 셰이딩 동작들로 되돌아가지 않고서, 예를 들면, 프로세싱은 블럭 2040으로 되돌아갈 수 있고 프레임은 갱신된 심도로 재-래스터화될 수 있다. 이 실시예에 대해 적어도 이전의 셰이딩 결과들이 하나 또는 그 이상의 오브젝트-인덱싱된 캐시들에 저장되는 한도에서, 다이싱 및 재-래스터화 동작들이 재수행되지 않기 때문에, 프레임은 빠르게 리렌더될 수 있다. 소정의 실시예들에 대해, 일부 셰이딩 동작들은 이전에 오브젝트-인덱싱된 캐시에 그 결과가 저장되지 않았던 동작들에 대해 재계산될 수 있다. 청구 대상에 따른 실시예는 블럭들 2010-2050 모두를 혹은 그 이상을, 혹은 그 이하를 포함할 수 있다. 또한, 블럭들 2010-2050의 순서는 단순히 한가지 예의 순서이고, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
도 21은 카메라 파라미터 변경에 응답하여 프레임의 리렌더를 가속화하기 위한 방법의 예시적인 실시예의 흐름도이다. 블럭 2110에서, 프레임의 렌더와 연관된 오브젝트 정보는 오브젝드-인덱싱된 캐시에 저장될 수 있고, 블럭 2120에서 카메라 파라미터가 수정될 수 있다. 실시예에 대해, 카메라 파라미터는 심도를 포함할 수 있다. 블럭 2130에서, 프레임은 오브젝드-인덱싱된 캐시 내에 저장된 오브젝트 정보의 적어도 서브세트를 이용하여 리렌더링될 수 있다. 청구 대상에 따른 실시예는 블럭들 2110-2130 모두를 혹은 그 이상을, 혹은 그 이하를 포함할 수 있 다. 또한, 블럭들 2110-2130의 순서는 단순히 한가지 예의 순서이고, 청구 대상의 범위는 이러한 특면에 제한되지 않는다.
카메라 파라미터에 대한 변경들에 응답하여 수행되는 리렌더링 동작들을 가속화하는 것에 부가하여, 카메라 위치의 변경에 응답하여 수행되는 리렌더링 동작들을 가속화하는 것이 바람직할 수도 있다. 몇몇 예시적인 실시예들에서, 카메라 위치는 카메라 배향 및/또는 시야각과 관련된 수 있지만, 청구 대상의 범위는 이러한 측면에 제한되지 않는다. 상술된 바와 같이, 렌더링 프로세스의 일부는 어떤 오브젝트들 또는 오브젝트들 상의 포인트들이 카메라의 견지에서 보이는지를 판정하는 단계를 포함할 수 있다. 카메라가 이동되면, 가시적인 포인트들의 세트가 변할 수 있다. 지금 보이는 카메라 이동 전에 숨겨질 수 있었던 포인트들에 대해, 이전에 캐시된 정보가 없을 것이므로, (이전에 수행되지 않았다면) 캐시들을 할당하고, 셰이딩 동작들을 계산하고, 및/또는 할당된 캐시들 내에 계산된 결과들을 저장하는 부가적인 동작들이 수행될 수도 있다.
도 22는 카메라 위치의 변경에 응답하여 프레임의 리렌더링을 가속화하기 위한 방법의 예시적인 실시예의 흐름도이다. 블록 2210에서 장면 데이터가 판독될 수 있다. 블록 2220에서, 장면의 오브젝트들에 대해 다이싱(테셀레이팅(tessellating)) 동작들이 수행될 수 있다. 블록 2230에서, 셰이딩 동작들이 수행될 수 있고, 블록 2240에서 이미지가 래스터화될 수 있다. 하나 이상의 실시예들에서, 셰이딩 동작들 중 적어도 일부의 결과들이 하나 이상의 오브젝트-인덱싱된 캐시들 내에 저장될 수 잇다. 또한, 실시예에서, 래스터화는 GPU에 의해 수행될 수 있지만, 청구 대상의 범위는 이러한 측면에 제한되지 않는다. 블록 2250에서, 장면에 대한 카메라 위치의 변경이 이루어질 수 있다. 장면을 리렌더링하기 위해, 프로세싱은 블록 2220으로 돌아갈 수 있다. 블록 2220에서, 이전에 숨겨진 어떤 포인트들이 지금 보이는지 그리고 이전에 보이는 어떤 포인트들이 지금 숨겨져 있는지에 대한 판정이 이루어질 수 있다. 블록 2230에서, 지금 카메라에 보이는 이전에 숨겨진 포인트들에 대해, 셰이딩 동작들이 수행될 수 있고 셰이딩 결과들이 오브젝트-인덱싱된 캐시 내에 저장될 수 있다. 카메라의 이동에 의해 영향받은 다른 포인트들에 대한 셰이딩 결과들은 또한 블록 2230에서 재계산될 수도 있다. 블록 2240에서, 새롭게 보이는 포인트들 및 카메라 이동에 의해 영향받은 다른 포인트들에 대한 계산된 셰이딩 결과들과 하나 이상의 오브젝트-인덱싱된 캐시들 내에 미리 캐시된 오브젝트 정보의 조합을 이용하여 프레임이 재래스터화될 수 있다. 재래스터화는 하나 이상의 실시예들에서 GPU에 의해 수행될 수 있다. 카메라 이동에 의해 영향받은 포인트들의 셰이딩 결과들을 계산하고 가능한 경우 캐시된 정보를 이용함으로써, 카메라 위치의 변경에 응답하는 프레임의 리렌더가 크게 가속화될 수 있다. 리렌더는 하나 이상의 GPU를 사용하여 래스터화 동작들을 수행함으로써 더 가속화될 수 있다.
청구 대상에 따른 실시예는 블록들 2210-2250 모두, 모두 이상, 또는 모두 이하를 포함할 수 있다. 또한, 블록들 2210-2250의 순서는 단지 하나의 예시적인 순서이며, 청구 대상의 범위가 이러한 측면에 제한되지 않는다.
도 23은 카메라 위치에 응답하여 프레임의 리렌더링을 가속화하기 위한 방법 의 또 다른 예시적인 실시예의 흐름도이다. 블록 2310에서, 프레임의 렌더와 관련된 오브젝트 정보가 오브젝트-인덱싱된 캐시 내에 저장될 수 있고, 블록 2320에서, 카메라 위치가 수정될 수 있다. 블록 2330에서, 오브젝트-인덱싱된 캐시 내에 저장된 오브젝트 정보의 적어도 서브세트를 이용하여 프레임이 리렌더링될 수 있다. 청구 대상에 따른 실시예는 블록들 2310-2330의 모두, 모두 이상, 또는 모두 이하를 포함할 수 있다. 또한, 블록들 2310-2330의 순서는 단지 하나의 예시적인 순서이며, 청구 대상의 범위는 이러한 측면에 제한되지 않는다.
전술한 설명에서, 청구 대상의 다양한 양태들이 기술되었다. 설명을 위해, 청구 대상의 전반적인 이해를 제공하도록 시스템 및 구성들이 개시되었다. 그러나, 청구 대상가 특정 상세 없이 실시될 수 있다는 것이 본 개시물의 이점을 갖는 기술 분야의 당업자에게 자명하다. 다른 예들에서는, 청구 대상를 모호하게 하지 않기 위해 공지되어 있는 특징들은 생략되거나 및/또는 간략화되었다. 본원에는 특정한 특징들이 예시되거나 및/또는 기술되었지만, 분 기술 분야의 당업자에게는 많은 수정, 대체, 변경 및/또는 등가물들이 발생할 수 있을 것이다. 따라서, 첨부된 청구항들은 청구 대상의 진정한 범위 내에 있는 모든 수정 및/또는 변경들을 포함하도록 의도됨을 이해해야 한다.
도 1은 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 플랫폼의 일 실시예의 블록도.
도 2는 복수의 광원 및 복수의 3차원 오브젝트를 포함하는 예시적인 장면의 도면.
도 3은 상호 작용적인 재조명 프로세스의 일 실시예의 도면.
도 4는 프레임의 리렌더링을 가속화하는 방법의 일 실시예의 흐름도.
도 5는 프레임의 리렌더링을 가속화하는 방법의 다른 실시예의 흐름도.
도 6은 프레임의 리렌더링을 가속화하는 방법의 다른 실시예의 흐름도.
도 7은 프레임의 리렌더링을 가속화하는 방법의 다른 실시예의 흐름도.
도 8은 오브젝트-인덱싱된 캐시(object-indexed cache)에 프레임의 렌더와 연관된 오브젝트 정보를 저장하는 단계를 포함하는 프레임의 재조명을 가속화하는 방법의 일 실시예의 흐름도.
도 9는 오브젝트 상의 포인트와 연관된 복수의 광들에 대한 정보의 블록들을 도시하는 도면.
도 10은 그리드 캐시의 예시적인 실시예의 블록도.
도 11은 렌더 동작과 연관된 항목들의 우선 순위 리스트 중 어느 것이 캐시되어야 할지를 판정하는 방법의 일 실시예의 흐름도.
도 12는 수정된 외부 파일에 의존하는 캐시된 오브젝트 정보를 재계산하는 방법의 예시적인 실시예의 흐름도.
도 13은 낮은 충실도 렌더를 수행하는 방법의 예시적인 실시예의 흐름도.
도 14는 장면의 렌더를 점진적으로 개선하는 방법의 예시적인 실시예의 흐름도.
도 15는 낮은 충실도 및 높은 충실도 프로세스에 의해 렌더링되는 장면을 나타내는 예시적인 디스플레이의 도면.
도 16은 프레임의 렌더를 중단하는 방법의 예시적인 실시예의 흐름도.
도 17은 프레임의 렌더를 중단하고 그 프레임을 리렌더링하는 방법의 예시적인 실시예의 흐름도.
도 18은 광원 및 두 개의 오브젝트들을 포함하는 예시적인 장면을 나타내는 도면.
도 19는 오브젝트들 간의 조명 의존성(lighting dependency)을 판정하는 방법의 일 실시예의 흐름도.
도 20은 심도(depth-of-field)의 변경에 응답하여 프레임의 리렌더링을 가속화하는 방법의 일 실시예의 흐름도.
도 21은 카메라 파라미터의 변경에 응답하여 프레임의 리렌더링을 가속화하는 방법의 일 실시예의 흐름도.
도 22는 카메라 위치 변경에 응답하여 프레임의 리렌더링을 가속화하는 방법의 일 실시예의 흐름도.
도 23은 카메라 위치 변경에 응답하여 프레임의 리렌더링을 가속화하는 방법의 또 다른 실시예의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
210 : 카메라
280 : 이미지면
240 : 광
270 : 오브젝트
251 : 포인트

Claims (8)

  1. 프레임 리렌더 가속화(re-render acceleration)를 위한 방법으로서,
    상기 프레임의 렌더(render)와 관련된 오브젝트 정보를 오브젝트-인덱싱된(object-indexed) 캐시 내에 저장하는 단계 - 상기 오브젝트 정보는 하나 이상의 셰이딩 동작에 대한 결과를 포함하고, 상기 하나 이상의 셰이딩 동작에 대한 하나 이상의 입력 값을 더 포함함 - ;
    사용자에 의해 지정된 조명 변경에 적어도 부분적으로 응답하여 조명 파라미터(lighting parameter)를 수정하는 단계; 및
    상기 오브젝트-인덱싱된 캐시 내에 저장된 상기 오브젝트 정보의 적어도 서브세트를 이용하여 상기 프레임을 리렌더링(re-rendering)하는 단계
    를 포함하는 프레임 리렌더 가속화를 위한 방법.
  2. 제1항에 있어서,
    상기 프레임의 렌더와 관련된 오브젝트 정보를 오브젝트-인덱싱된 캐시 내에 저장하는 단계는 중간 셰이딩(shading) 결과들을 저장하는 단계를 포함하는 프레임 리렌더 가속화를 위한 방법.
  3. 제1항에 있어서,
    상기 조명 파라미터의 수정에 의해 영향받은 오브젝트 정보를 재계산하는 단계를 더 포함하는 프레임 리렌더 가속화를 위한 방법.
  4. 제3항에 있어서,
    상기 프레임을 리렌더링하는 단계는 상기 재계산된 오브젝트 정보를 이용하여 상기 프레임을 리렌더링하는 단계를 더 포함하는 프레임 리렌더 가속화를 위한 방법.
  5. 제4항에 있어서,
    상기 조명 파라미터의 수정에 의해 영향받은 오브젝트 정보를 재계산하는 단계는 하나 이상의 오브젝트의 복수의 포인트 중 어느 포인트가 상기 조명 파라미터의 수정에 의해 영향받는지를 판정하는 단계를 포함하는 프레임 리렌더 가속화를 위한 방법.
  6. 제1항에 있어서,
    상기 프레임을 리렌더링하는 단계는 그래픽 프로세싱 유닛을 이용하여 상기 프레임을 재래스터화하는(re-rasterizing) 단계를 포함하는 프레임 리렌더 가속화를 위한 방법.
  7. 제1항에 있어서,
    상기 프레임의 렌더와 관련된 오브젝트 정보를 저장하는 단계는 프레임의 초기 렌더와 관련된 오브젝트 정보를 저장하는 단계를 포함하는 프레임 리렌더 가속화를 위한 방법.
  8. 제1항에 있어서,
    상기 프레임의 렌더와 관련된 오브젝트 정보를 오브젝트-인덱싱된 캐시 내에 저장하는 단계는 최종 셰이딩 결과들을 저장하는 단계를 포함하는 프레임 리렌더 가속화를 위한 방법.
KR1020070074728A 2006-07-25 2007-07-25 조명 변경에 의한 프레임 리렌더 가속화 KR100908147B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/493,058 2006-07-25
US11/493,058 US8633927B2 (en) 2006-07-25 2006-07-25 Re-render acceleration of frame with lighting change

Publications (2)

Publication Number Publication Date
KR20080010346A KR20080010346A (ko) 2008-01-30
KR100908147B1 true KR100908147B1 (ko) 2009-07-16

Family

ID=38985711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070074728A KR100908147B1 (ko) 2006-07-25 2007-07-25 조명 변경에 의한 프레임 리렌더 가속화

Country Status (4)

Country Link
US (1) US8633927B2 (ko)
KR (1) KR100908147B1 (ko)
CN (1) CN101178807B (ko)
TW (1) TWI479447B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073786A (ko) * 2016-12-22 2018-07-03 주식회사 디지털아이디어 3차원 영상의 오브젝트 처리장치 및 그 동작 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8633927B2 (en) 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US8022958B2 (en) * 2007-04-04 2011-09-20 Qualcomm Incorporated Indexes of graphics processing objects in graphics processing unit commands
US8547378B2 (en) * 2008-08-28 2013-10-01 Adobe Systems Incorporated Time-based degradation of images using a GPU
US8810572B2 (en) * 2011-10-31 2014-08-19 Qualcomm Incorporated Tessellation cache for object rendering
US8970596B2 (en) * 2012-02-17 2015-03-03 Apple Inc. Using render-graph characteristics to optimize the rendering of an adjusted image
CN106133796B (zh) 2014-03-25 2019-07-16 苹果公司 用于在真实环境的视图中表示虚拟对象的方法和系统
KR102306780B1 (ko) * 2014-12-15 2021-09-30 삼성전자주식회사 영상 처리 장치 및 방법
US10155158B2 (en) * 2016-06-13 2018-12-18 King.Com Ltd. Rendering method
CN114140571A (zh) * 2020-08-15 2022-03-04 华为云计算技术有限公司 渲染方法、设备以及系统
CN114255315A (zh) * 2020-09-25 2022-03-29 华为云计算技术有限公司 一种渲染方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0613099A1 (en) 1993-01-28 1994-08-31 Philips Electronics Uk Limited Rendering an image
KR20030083962A (ko) * 2002-04-24 2003-11-01 주식회사 알오지 3차원 렌더링 이미지에 쉐이딩 효과를 적용하는 방법 및이를 구현한 프로그램을 저장한 정보저장매체

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088054A (en) 1988-05-09 1992-02-11 Paris Ii Earl A Computer graphics hidden surface removal system
US5283860A (en) * 1990-11-15 1994-02-01 International Business Machines Corporation System and method for displaying trimmed surfaces using bitplane masking
US5592678A (en) * 1991-07-23 1997-01-07 International Business Machines Corporation Display adapter supporting priority based functions
US5388841A (en) * 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
US5574835A (en) 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5596686A (en) 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
AU6600496A (en) 1995-07-26 1997-02-26 Raycer, Incorporated Method and apparatus for span sorting rendering system
US5867166A (en) * 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US6064393A (en) * 1995-08-04 2000-05-16 Microsoft Corporation Method for measuring the fidelity of warped image layer approximations in a real-time graphics rendering pipeline
US5808617A (en) * 1995-08-04 1998-09-15 Microsoft Corporation Method and system for depth complexity reduction in a graphics rendering system
US5864342A (en) * 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5774386A (en) * 1995-09-08 1998-06-30 Eastman Kodak Company Method and apparatus for performing function evaluation using a cache
US5977986A (en) * 1995-12-06 1999-11-02 Intel Corporation Image encoding for faster decoding
US5701404A (en) * 1996-05-31 1997-12-23 Softimage Method and system for efficiently trimming a nurbs surface with a projected curve
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US5914726A (en) * 1997-06-27 1999-06-22 Hewlett-Packard Co. Apparatus and method for managing graphic attributes in a memory cache of a programmable hierarchical interactive graphics system
US6437796B2 (en) * 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6329986B1 (en) 1998-02-21 2001-12-11 U.S. Philips Corporation Priority-based virtual environment
US6091422A (en) * 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US6570578B1 (en) * 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6552723B1 (en) 1998-08-20 2003-04-22 Apple Computer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
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
US7817158B1 (en) * 1998-10-23 2010-10-19 Autodesk, Inc. Specifying operations to be applied to the attributes of a set of objects
US6549210B1 (en) * 1999-02-03 2003-04-15 Ati Technologies Inc. Method and apparatus for cache index hashing
US6614445B1 (en) * 1999-03-23 2003-09-02 Microsoft Corporation Antialiasing method for computer graphics
US6603474B1 (en) 1999-05-27 2003-08-05 International Business Machines Corporation Method and apparatus for occlusion culling of objects in a data processing system
US6426747B1 (en) * 1999-06-04 2002-07-30 Microsoft Corporation Optimization of mesh locality for transparent vertex caching
US6577679B1 (en) 1999-09-30 2003-06-10 Hewlett-Packard Development Company Lp Method and apparatus for transcoding coded picture signals from object-based coding to block-based coding
US6377257B1 (en) 1999-10-04 2002-04-23 International Business Machines Corporation Methods and apparatus for delivering 3D graphics in a networked environment
US6684255B1 (en) 1999-10-26 2004-01-27 International Business Machines Corporation Methods and apparatus for transmission and rendering of complex 3D models over networks using mixed representations
US6459434B1 (en) 1999-11-03 2002-10-01 Intel Corporation Apparatus and method for progressively rendered procedural textures
US6396503B1 (en) 1999-12-31 2002-05-28 Hewlett-Packard Company Dynamic texture loading based on texture tile visibility
EP1264281A4 (en) 2000-02-25 2007-07-11 Univ New York State Res Found ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME
US6426755B1 (en) * 2000-05-16 2002-07-30 Sun Microsystems, Inc. Graphics system using sample tags for blur
US7071937B1 (en) * 2000-05-30 2006-07-04 Ccvg, Inc. Dirt map method and apparatus for graphic display system
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
US6593925B1 (en) 2000-06-22 2003-07-15 Microsoft Corporation Parameterized animation compression methods and arrangements
US7348977B2 (en) 2000-07-19 2008-03-25 Pixar Subsurface scattering approximation methods and apparatus
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7061502B1 (en) * 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US6672963B1 (en) 2000-09-18 2004-01-06 Nintendo Co., Ltd. Software implementation of a handheld video game hardware platform
KR20020022388A (ko) 2000-09-20 2002-03-27 박주선 주문형 미디어 유료 서비스 시스템 및 그 방법
WO2002048966A1 (en) 2000-12-14 2002-06-20 Rtimage Inc. Three-dimensional image streaming system and method for medical images
US7139794B2 (en) 2000-12-27 2006-11-21 3-D-V-U Israel (2000) Ltd. System and methods for network image delivery with dynamic viewing frustum optimized for limited bandwidth communication channels
US6677957B2 (en) 2001-01-09 2004-01-13 Intel Corporation Hardware-accelerated visualization of surface light fields
US6798421B2 (en) * 2001-02-28 2004-09-28 3D Labs, Inc. Ltd. Same tile method
US6741259B2 (en) * 2001-03-30 2004-05-25 Webtv Networks, Inc. Applying multiple texture maps to objects in three-dimensional imaging processes
EP1248250A1 (en) * 2001-04-04 2002-10-09 Sun Microsystems, Inc. Optimized data access for drawing operations
US6754799B2 (en) * 2001-05-16 2004-06-22 Microsoft Corporation System and method for indexing and retrieving cached objects
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6989840B1 (en) 2001-08-31 2006-01-24 Nvidia Corporation Order-independent transparency rendering system and method
WO2003034343A1 (fr) 2001-10-15 2003-04-24 Fujitsu Limited Tri hierarchique d'objets lies dans un espace tridimensionnel virtuel
JP3761085B2 (ja) * 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
US6903741B2 (en) * 2001-12-13 2005-06-07 Crytek Gmbh Method, computer program product and system for rendering soft shadows in a frame representing a 3D-scene
US20030169255A1 (en) * 2002-03-11 2003-09-11 Lavelle Michael G. Two-sided lighting in a single pass
US7009605B2 (en) 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US7262770B2 (en) 2002-03-21 2007-08-28 Microsoft Corporation Graphics image rendering with radiance self-transfer for low-frequency lighting environments
US6809739B2 (en) * 2002-04-30 2004-10-26 Silicon Graphics, Inc. System, method, and computer program product for blending textures during rendering of a computer generated image using a single texture as a mask
US7009608B2 (en) * 2002-06-06 2006-03-07 Nvidia Corporation System and method of using multiple representations per object in computer graphics
US6853377B2 (en) * 2002-06-26 2005-02-08 Nvidia Corporation System and method of improved calculation of diffusely reflected light
US6876362B1 (en) * 2002-07-10 2005-04-05 Nvidia Corporation Omnidirectional shadow texture mapping
JP4467267B2 (ja) 2002-09-06 2010-05-26 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置、および画像処理システム
US20040169656A1 (en) 2002-11-15 2004-09-02 David Piponi Daniele Paolo Method for motion simulation of an articulated figure using animation input
US7145565B2 (en) 2003-02-27 2006-12-05 Nvidia Corporation Depth bounds testing
FR2852128A1 (fr) 2003-03-07 2004-09-10 France Telecom Procede pour la gestion de la representation d'au moins une scene 3d modelisee.
US7259765B2 (en) * 2003-04-04 2007-08-21 S3 Graphics Co., Ltd. Head/data scheduling in 3D graphics
US6954211B2 (en) * 2003-06-30 2005-10-11 Microsoft Corporation Hardware-accelerated anti-aliased graphics
US8264489B2 (en) * 2003-07-11 2012-09-11 Intel Corporation Interface remoting
US7444595B2 (en) 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US7091979B1 (en) * 2003-08-29 2006-08-15 Nvidia Corporation Pixel load instruction for a programmable graphics processor
US20050083340A1 (en) * 2003-10-15 2005-04-21 Microsoft Corporation Bi-scale radiance transfer
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7145656B2 (en) 2003-12-15 2006-12-05 E. I. Du Pont De Nemours And Company Computer-implemented method for matching paint
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
WO2005104042A1 (en) * 2004-04-20 2005-11-03 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-gpu acceleration for real-time volume rendering on standard pc
US7821516B2 (en) * 2004-05-17 2010-10-26 Pixar Automatic pre-render pinning of change isolated assets methods and apparatus
US7388585B2 (en) 2004-09-20 2008-06-17 My Virtual Reality Software Method, system and device for efficient distribution of real time three dimensional computer modeled image scenes over a network
US7920144B2 (en) * 2005-01-18 2011-04-05 Siemens Medical Solutions Usa, Inc. Method and system for visualization of dynamic three-dimensional virtual objects
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US7427986B2 (en) * 2005-03-03 2008-09-23 Pixar Hybrid hardware-accelerated relighting system for computer cinematography
EP1964101A4 (en) * 2005-12-24 2013-08-28 Joshua D I Distler METHOD AND FILES FOR DELIVERING PICTURE MATERIAL WITH INTEGRATED DATA
US8633927B2 (en) 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0613099A1 (en) 1993-01-28 1994-08-31 Philips Electronics Uk Limited Rendering an image
KR20030083962A (ko) * 2002-04-24 2003-11-01 주식회사 알오지 3차원 렌더링 이미지에 쉐이딩 효과를 적용하는 방법 및이를 구현한 프로그램을 저장한 정보저장매체

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
한국정보과학회 2005 가을 학술발표 문집(Ⅰ)제32 제2호, 2005. 11, pp. 697 ~ 699 (3pages)
한국정보과학회 2005 한국컴퓨터종합학술대회 논문집(A), 2005. 7, pp. 685 ~ 687 (3pages)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073786A (ko) * 2016-12-22 2018-07-03 주식회사 디지털아이디어 3차원 영상의 오브젝트 처리장치 및 그 동작 방법
KR101966247B1 (ko) * 2016-12-22 2019-04-08 주식회사 디지털아이디어 3차원 영상의 오브젝트 처리장치 및 그 동작 방법

Also Published As

Publication number Publication date
CN101178807B (zh) 2011-04-06
TW200820128A (en) 2008-05-01
US8633927B2 (en) 2014-01-21
TWI479447B (zh) 2015-04-01
CN101178807A (zh) 2008-05-14
US20080024495A1 (en) 2008-01-31
KR20080010346A (ko) 2008-01-30

Similar Documents

Publication Publication Date Title
KR100908147B1 (ko) 조명 변경에 의한 프레임 리렌더 가속화
US11682158B2 (en) Foveated rendering
US10991153B2 (en) Object illumination in hybrid rasterization and ray traced 3-D rendering
US11816782B2 (en) Rendering of soft shadows
CN107833262B (zh) 图形处理系统和图形处理器
US10719912B2 (en) Scaling and feature retention in graphical elements defined based on functions
US10628995B2 (en) Anti-aliasing of graphical elements defined based on functions
JP4977712B2 (ja) ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびにその方法
KR20230007358A (ko) 증강 현실을 위한 멀티레이어 재투영 기법들
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US20170011543A1 (en) Sparse Rasterization
JP7554915B2 (ja) 深度バッファプレパス
TW202141417A (zh) 用於高效多視圖光柵化的方法和裝置
US20140160124A1 (en) Visible polygon data structure and method of use thereof
KR20220164484A (ko) 섀도우 정보를 이용한 렌더링
CN118799471A (zh) 一种bim轻量化引擎的材质属性存储方法、装置及设备
KR20240151243A (ko) 가변 레이트 테셀레이션
CN116993894A (zh) 虚拟画面的生成方法、装置、设备、存储介质及程序产品

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: 20130620

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 11