KR101692193B1 - 크라우드소싱된 비디오 렌더링 시스템 - Google Patents

크라우드소싱된 비디오 렌더링 시스템 Download PDF

Info

Publication number
KR101692193B1
KR101692193B1 KR1020167005374A KR20167005374A KR101692193B1 KR 101692193 B1 KR101692193 B1 KR 101692193B1 KR 1020167005374 A KR1020167005374 A KR 1020167005374A KR 20167005374 A KR20167005374 A KR 20167005374A KR 101692193 B1 KR101692193 B1 KR 101692193B1
Authority
KR
South Korea
Prior art keywords
render
computer system
clients
composite
processor
Prior art date
Application number
KR1020167005374A
Other languages
English (en)
Other versions
KR20160031553A (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 KR20160031553A publication Critical patent/KR20160031553A/ko
Application granted granted Critical
Publication of KR101692193B1 publication Critical patent/KR101692193B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • 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/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/024Multi-user, collaborative environment
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Image Processing (AREA)

Abstract

컴퓨터 시스템에 의해, 3D 환경의 공통 렌더 자산(render asset)들, 다른 송신 공간 위치들과는 상이한 고유 공간 위치를 복수의 참가 클라이언트의 서브셋으로 송신하는 단계 - 상기 고유 공간 위치는 상기 3D 환경의 각각의 렌더의 생성을 위한 위치를 나타냄 -; 상기 컴퓨터 시스템에 의해, 상기 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 상기 각각의 렌더를 생성하라는 하나 이상의 명령을 상기 참가 클라이언트들의 각각으로 송신하는 단계; 상기 컴퓨터 시스템에 의해, 상기 참가 클라이언트들의 각각으로부터 상기 공통 렌더 자산들을 포함하는 환경의 일부에 대한 상기 각각의 렌더를 수신하는 단계; 상기 컴퓨터 시스템에 의해, 상기 3D 환경을 포함하는 장면을 위해 합성될 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과하는지 여부를 결정하는 단계; 상기 컴퓨터 시스템에 의해, 상기 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과할 때, 다수의 렌더들의 수행을 통해, 상기 샘플들의 요구수를 획득하는 단계; 상기 컴퓨터 시스템에 의해, 상기 샘플들의 요구수를 획득하면 상기 각각의 렌더들로부터 복합 렌더를 생성하는 단계 - 상기 각각의 렌더들의 각각은 상기 공통 렌더 자산들을 포함하고, 상기 각각의 렌더들의 각각은 상기 송신된 공간 위치들 중 하나로부터 렌더링됨 -; 및 상기 컴퓨터 시스템에 의해 상기 복합 렌더를 적어도 상기 참가 클라이언트들로 송신하는 단계를 포함하는 방법이 제공된다.

Description

크라우드소싱된 비디오 렌더링 시스템{CROWD-SOURCED VIDEO RENDERING SYSTEM}
본 개시물은 일반적으로 애플리케이션의 분산 크라우드소싱된(crowd-sourced) 그래픽 렌더링에 관한 것으로, 특히, 하나 이상의 접속된 클라이언트의 그래픽 처리 유닛을 이용하여 확산 광 렌더링을 수행하고, 하나 이상의 접속된 클라이언트로부터 렌더링된 장면을 수신하고, 수신된 장면으로부터 합성 장면을 생성하고 합성 장면을 접속된 모든 클라이언트로 송신하는 서버에 관한 것이다.
일반적으로, 클라이언트 서버 아키텍쳐는 "서비스 제공자"로서 간주될 수 있는 서버와 "서비스 요청자" 또는 "서비스 소비자"로서 간주될 수 있는 클라이언트 사이에 태스크 또는 작업 부하를 분할하는 분산 컴퓨팅 아키텍쳐이다. 종종, 서버와 클라이언트는 컴퓨터 네트워크를 통해 접속되고, 많은 타입의 데이터가 개인 서버와 개인 클라이언트 사이에서 컴퓨터 네트워크를 통해 양방향으로 송신될 수 있다. 전통적으로, 서버는 통상 클라이언트보다 더 많은 자원 및 더 큰 수행 능력을 갖는다. 서버는 클라이언트에 대한 소정의 태스크를 수행하는 (즉, 클라이언트에게 서비스를 제공하는) 등의 자원을 하나 이상의 클라이언트와 공유할 수 있다. 서버는 일반적으로 클라이언트보다 많은 자원을 갖기 때문에, 서버는 클라이언트가 할 수 있는 것보다 더 빠르게 태스크, 특히, 자원 요구 태스크를 완료할 수 있다.
서버와 클라이언트 사이에서 교환되는 데이터는 임의의 적절한 데이터 포맷을 이용하여 표현될 수 있고 임의의 적절한 통신 프로토콜을 이용하여 송신될 수 있다. 예를 들어, 애플리케이션이 클라이언트를 위한 서버 상에서 실행될 때, 애플리케이션의 출력은 HTML(Hypertext Markup Language) 문서 또는 XML(Extensible Markup Language) 문서 등의 구조화된 문서를 이용하여 표현될 수 있다. 서버는 애플리케이션의 출력을 나타내는 데이터를 포함하는 HTML 또는 XML 문서를 서버와 클라이언트 간의 HTTP(HyperText Transfer Protocol) 접속을 통해 클라이언트에 송신할 수 있다. HTML 또는 XML 문서를 수신하면, 클라이언트는 클라이언트 상에서 실행되는 웹 브라우저에서처럼 문서를 소비하고 HTML 또는 XML 문서를 이용하여 국부적으로 애플리케이션의 출력을 렌더링할 수 있다.
개요
본 개시물은, 일반적으로 렌더링된 출력을 다시 서버로 송신하는 하나 이상의 접속된 클라이언트들 사이에서 렌더링 태스크를 분산하고 접속된 모든 클라이언트로 송신하고 디스플레이하기 위하여 클라이언트 출력을 단일 렌더링된 출력으로 합성하는 크라우드소싱된 그래픽 렌더링 시스템에 관한 것이다.
서버측 그래픽 렌더링의 컨텍스트에서, 단일 서버는 그래픽 오브젝트들을 렌더링하고 출력을 클라이언트들에 스트리밍하는 그래픽 프로세싱 유닛(GPU)의 어레이를 포함한다. 그러나, 렌더링 복합 3D 환경은 프로세서 사이클에 있어서 비싸고, 렌더링된 프레임 또는 장면을 부착된 클라이언트들에 적절하게 제공하기 위하여 추가의 GPU 또는 서버가 추가되어야 한다. 따라서, 전통적인 서버측 그래픽 렌더링은 중요한 확장성 문제에 부딪힌다. 제공자가 서버 또는 GPU를 추가하여 증가된 수의 클라이언트의 요구를 충족시키는데 엄청나게 비쌀 수 있고, 반대로, 서버 또는 GPU 인프라스트럭쳐에서의 과잉 투자는 요구가 수용력 미만이면 충분히 활용하지 못하는 것이 된다.
추가적으로, 최근, 비교적 복잡한 3D 렌더링을 신속하게 수행할 수 있는 GPU를 갖는 소비자 레벨 장치의 수가 급격히 증가하고 있다. 예를 들어, 1분 이내에서 3D 장면의 경로 추적을 수행할 수 있는 퍼스널 컴퓨터 프로세싱 GPU의 수가 2000년대 초반에 몇 안되는 수의 컴퓨터로 제한되었지만, 현재 사천만개가 넘는 퍼스널 컴퓨터가 이 능력을 갖는 GPU를 갖는다. 그러므로, 이들 클라이언트측 GPU가 그래픽 렌더링 태스크를 서버로부터 클라이언트로 넘겨 실제로 주어진 프레임 또는 환경의 렌더링을 크라우드소싱하는 것이 바람직하다.
일 실시예에서, 컴퓨터 시스템은 복수의 애플리케이션 인스턴스를 호스팅하고, 각각의 애플리케이션 인스턴스는 원격 클라이언트 애플리케이션에 대응한다. 컴퓨터 시스템은 애플리케이션 인스턴스가 호스팅되는 원격 클라이언트 애플리케이션의 각각으로의 네트워크 접속을 유지한다. 특정한 실시예에서, 애플리케이션 인스턴스는 후술하는 바와 같이 소프트웨어 스터브(stub)이다. 특정한 실시예에서, 컴퓨터 시스템은 렌더링에 기여하기에 충분히 파워풀한 GPU를 갖는 컴퓨터들에 대한 클라이언트 애플리케이션들로 렌더 자산들을 송신한다. 특정한 실시예에서, 컴퓨터 시스템은 후술하는 바와 같이 VSDO(viewport state data object)의 형태로 렌더 자산들을 송신한다. 특정한 실시예에서, 컴퓨터 시스템은 또한 크라우드소싱된 렌더링 프로세스에 참가한 각 클라이언트로 고유 공간 위치를 송신 또는 할당한다. 특정한 실시예에서, 클라이언트 장치는 수신된 렌더 자산 및 고유 시점을 이용하여 프레임 또는 환경을 렌더링한다. 특정한 실시예에서, 클라이언트 장치는 경로 추적을 수행하여 장면 또는 환경의 확산 조명을 렌더링한다. 할당된 렌더링 태스크를 완료한 후에, 각각의 참가 클라이언트 장치는 렌더링된 출력을 컴퓨터 시스템으로 다시 송신한다. 특정한 실시예에서, 렌더링된 출력은 특정 시점으로부터의 프레임이다. 특정한 실시예에서, 렌더링된 출력은 환경의 확산 조명에 대한 광 맵이다. 특정한 실시예에서, 렌더링된 출력은 변경된 VSDO이다. 렌더링된 출력을 수신하면, 컴퓨터 시스템은 크라우드소싱된 렌더링 프로세스에 참가하지 않은 클라이언트를 포함하는 접속된 모든 클라이언트에 송신하기 위하여 복합 렌더링된 출력을 생성한다.
특정한 실시예에서, 각각의 접속된 클라이언트는 정확한 동일한 시점으로부터 장면을 보고, 컴퓨터 시스템은 디스플레이하기 위하여 특정 시점으로부터의 복합 프레임을 각각의 접속된 클라이언트로 송신한다. 특정한 실시예에서, 각각의 접속된 클라이언트는 다른 시각으로부터 장면을 보고, 컴퓨터 시스템은 자신의 렌더링 엔진에 사용되는 개별 클라이언트에 대한 복합 렌더 자산을 송신한다. 특정한 환경에서, 렌더 자산은 광 맵이거나 환경의 확산 조명을 나타내는 광 맵 데이터를 포함하는 VSDO이다. 따라서, 클라이언트는 고품질 라디오시티(radiosity) 조명을 유지하면서 렌더 자산들을 이용하여 상이한 시점들로부터 장면을 렌더링할 수 있다. 특정한 실시예에서, 클라이언트는 환경에 대한 크라우드소싱된 확산 조명을 포함하는 수신된 렌더 자산들과 결합하여 국부적으로 신속히 변하는 스페큘러 조명을 렌더링한다. 따라서, 유능한 GPU를 갖는 클라이언트 노드의 수가 증가함에 따라, 임의의 특정 장면이 더 신속하거나 더 높은 그래픽 품질로 렌더링될 수 있다.
일 실시예에서, 복합 렌더를 생성하는 방법이 개시된다. 방법은, 프로세서에 의해 하나 이상의 클라이언트로 공통 렌더 자산(render asset)들, 다른 송신된 공간 위치들과는 상이한 고유 공간 위치, 및 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 또는 공통 렌더 자산들 및 하나 이상의 클라이언트의 각각에 전송된 각각의 고유 공간 위치를 이용하여 렌더를 생성하는 하나 이상의 명령을 송신하는 단계를 포함한다. 실시예에서, 각각의 고유 공간 위치는 랜덤하게 생성된다.
실시예에서, 렌더를 생성하는 명령은 고유 공간 위치로부터 상기 렌더 자산들 상에서 경로 추적을 수행하는 명령을 포함하고, 렌더는 상기 렌더 자산들을 포함하는 전체 환경 또는 그 일부에 대한 광 맵이다. 실시예에서, 렌더는 프레임이고, 하나 이상의 명령은 프레임을 렌더링하는 공통 시점(viewpoint)을 더 포함한다. 실시예에서, 렌더 자산은 VSDO이고, 렌더는 경로 추적의 결과로서 산출된 확산 조명 데이터에 의해 향상된 렌더링 자산의 세트이다.
방법은, 프로세서에 의해 하나 이상의 클라이언트의 각각으로부터 렌더를 수신하는 단계 및 프로세서에 의해 수신된 렌더들로부터 복합 렌더를 생성하는 단계를 더 포함한다. 생성된 복합 렌더는 프로세서에 의해 하나 이상의 클라이언트로 송신된다. 실시예에서, 프로세서에 의해 복합 렌더를 생성하는 단계는 프로세서에 의해 수신된 광 맵들을 추가하여 렌더 자산들을 포함하는 전체 환경 또는 그 일부의 복합 광 맵을 생성하는 단계를 포함한다. 실시예에서, 프로세서에 의해 복합 렌더를 생성하는 단계는 수신된 프레임을 추가하여 복합 프레임을 생성하는 단계를 더 포함한다.
복합 렌더를 수신하는 방법이 개시된다. 방법은, 프로세서에 의해 서버로부터 렌더 자산들, 고유 공간 위치, 및 수신된 렌더 자산들 및 고유 공간 위치를 이용하여 렌더를 생성하는 하나 이상의 명령을 수신하는 단계를 포함한다. 방법은, 프로세서에 의해 하나 이상의 명령에 따라 렌더를 생성하는 단계, 프로세서에 의해 생성된 렌더를 서버로 송신하는 단계, 및 프로세서에 의해 서버로부터 복합 렌더를 수신하는 단계를 더 포함한다. 실시예에서, 방법은 프로세서에 의해 서버 독립 시점(server-independent viewpoint)으로부터 스페큘러(specular) 조명을 렌더링하는 단계, 프로세서에 의해 렌더링된 스페큘러 조명을 수신된 복합 렌더와 결합하는 단계, 및 프로세서에 의해 결합된 렌더링된 스페큘러 조명 및 수신된 복합 렌더를 디스플레이로 출력하는 단계를 더 포함한다.
실시예에서, 복합 렌더를 생성하는 시스템이 개시된다. 시스템은 그래픽 프로세싱 유닛, 프로세서, 및 상기 프로세서에 의해 실행될 프로그램 로직을 유형적으로(tangibly) 저장하는 저장 매체를 포함한다. 실시예에서, 프로그램 로직은, 하나 이상의 클라이언트로 공통 렌더 자산들을 송신하도록 상기 프로세서에 의해 실행되는 공통 렌더 자산 송신 로직, 상기 하나 이상의 클라이언트의 각각으로 다른 송신된 공간 위치들과는 상이한 고유 공간 위치를 송신하도록 상기 프로세서에 의해 실행되는 공간 위치 송신 로직, 상기 하나 이상의 클라이언트의 각각으로 상기 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 렌더를 생성하는 하나 이상의 명령을 송신하도록 상기 프로세서에 의해 실행되는 명령 송신 로직을 포함한다. 실시예에서, 프로그램 로직은 상기 하나 이상의 클라이언트의 각각으로부터 렌더를 수신하도록 상기 프로세서에 의해 실행되는 수신 로직, 상기 수신된 렌더들로부터 복합 렌더를 생성하도록 상기 프로세서에 의해 실행되는 복합 렌더 생성 로직, 및 상기 하나 이상의 클라이언트로 상기 복합 렌더를 송신하도록 상기 프로세서에 의해 실행되는 복합 렌더 송신 로직을 더 포함한다.
실시예에서, 복합 렌더를 수신하는 시스템이 개시된다. 시스템은 그래픽 프로세싱 유닛, 프로세서, 및 상기 프로세서에 의해 실행될 프로그램 로직을 유형적으로(tangibly) 저장하는 저장 매체를 포함한다. 실시예에서, 프로그램 로직은, 서버로부터 렌더 자산들, 고유 공간 위치 및 수신된 렌더 자산들 및 고유 공간 위치를 이용하여 렌더를 생성하는 하나 이상의 명령을 수신하도록 프로세서에 의해 실행되는 수신 로직을 포함한다. 프로그램 로직은 하나 이상의 명령에 따라 렌더를 생성하도록 프로세서에 의해 실행되는 렌더 생성 로직, 생성된 렌더를 서버로 송신하도록 프로세서에 의해 실행되는 송신 로직, 및 서버로부터 복합 렌더를 수신하도록 프로세서에 의해 실행되는 복합 렌더 수신 로직을 더 포함한다. 실시예에서, 시스템은 서버 독립 시점으로부터 스페큘러 조명을 렌더링하도록 프로세서에 의해 실행되는 조명 렌더링 로직을 더 포함한다. 시스템은 또한 렌더링된 스페큘러 조명을 수신된 복합 렌더와 결합하도록 프로세서에 의해 실행되는 결합 로직 및 결합된 렌더링된 스페큘러 조명 및 수신된 복합 렌더를 디스플레이에 출력하도록 프로세서에 의해 실행되는 출력 로직을 더 포함한다.
실시예에 있어서, 렌더를 생성하는 명령 송신 로직은 상기 고유 공간 위치로부터 상기 렌더 자산들 상에서 경로 추적을 수행하는 명령을 더 포함하고, 렌더는 렌더 자산들을 포함하는 전체 환경 또는 그 일부에 대한 광 맵이다. 실시예에서, 복합 렌더 생성 로직은 수신된 광 맵들을 추가하여 렌더 자산들을 포함하는 전체 환경 또는 그 일부의 복합 광 맵을 생성하는 추가 로직을 더 포함한다. 실시예에서, 복합 렌더 생성 로직은 수신된 프레임들을 추가하여 복합 프레임을 생성하도록 상기 프로세서에 의해 실행되는 추가 로직을 더 포함한다.
특징이 결합될 수 있는 이들 및 다른 실시예는 다음의 상세한 설명 및 첨부 도면을 참조함으로써 당업자에게 자명해질 것이다.
도 1은 크라우드소싱된 그래픽 렌더링 시스템을 구현하는 예시적인 클라이언트-서버 시스템을 나타내는 도면.
도 2는 고정 시점(viewpoint)으로부터의 프레임의 렌더링을 복수의 클라이언트로 분산하는 방법을 나타내는 도면.
도 3은 주어진 장면에 대한 예시적인 수신된 클라이언트 프레임들을 나타내는 도면.
도 3a는 도 3의 수신된 클라이언트 프레임들을 추가함으로써 생성된 복합 프레임을 나타내는 도면.
도 4는 복수의 클라이언트에게 환경의 렌더링을 분산하는 방법을 나타내는 도면.
도 5는 도 4에서 클라이언트들에 대한 예시적인 디스플레이 출력을 나타내는 도면.
도 6은 예시적인 네트워크 환경을 나타내는 도면.
도 7은 예시적인 컴퓨팅 시스템을 나타내는 도면.
본 개시물은 첨부된 도면에 도시된 몇몇 실시예를 참조하여 상세히 설명된다. 다음의 설명에서, 본 개시물의 철저한 이해를 제공하기 위하여 수많은 특정 세부사항이 기재된다. 그러나, 본 개시물은 이들 특정한 세부사항의 일부 또는 전부없이 실행될 수 있음은 당업자에게 자명하다. 다른 예에서, 공지된 프로세스 단계 및/또는 구조는 본 개시물을 불필요하게 모호하게 하는 것을 피하기 위하여 상세히 기재되지 않는다. 또한, 본 개시물은 특정 실시예와 결합하여 설명되지만, 이 설명은 본 개시물을 기재된 실시예로 한정하는 것으로 의도되지 않음을 이해해야 한다. 반대로, 설명은 첨부된 청구항에 의해 정의된 개시물의 사상 및 범위 내에 포함될 수 있는 대체물, 변형물 및 동등물을 커버하는 것으로 의도된다.
다양한 양태 또는 특징이 다수의 장치, 컴포넌트, 모듈 등을 포함할 수 있는 시스템에 관하여 제시될 것이다. 다양한 시스템은 추가의 장치, 컴포넌트, 모듈 등을 포함할 수 있고 및/또는 도면과 결합하여 논의된 장치, 컴포넌트, 모듈 등의 모두를 포함하지 않을 수 있다는 것을 이해할 것이다. 이들 어프로치의 조합이 또한 이용될 수 있다.
클라이언트-서버 아키텍쳐는 서버가 자신의 자원을 하나 이상의 클라이언트와 공유하도록 한다. 이러한 아키텍쳐는 다양한 이점을 갖는다. 예를 들어, 서버는 일반적으로 클라이언트보다 더 많은 자원(예를 들어, 프로세서 또는 메모리) 및 더 큰 수행 능력을 갖기 때문에, 서버는 클라이언트가 수행할 수 있는 것보다 더 빠르게 태스크를 완료할 수 있다. 이러한 성능차는 특히 태스크가 자원 집약적이거나 클라이언트가 제한된 양의 자원을 가질 때 뚜렷하다. 동시에, 서버가 클라이언트 대신 또는 클라이언트를 위해 태스크를 수행하는 동안, 클라이언트의 자원은 해방되어 (예를 들어, 클라이언트의 사용자와 상호작용하는) 클라이언트 상에서 국부적으로 수행될 필요가 있는 태스크 등의 다른 태스크를 수행할 수 있다.
서버 상에서 수행되기에 적절할 수 있는 하나의 타입의 태스크는 클라이언트로 송신될 비디오 출력으로서 서버에 의해 호스팅된 애플리케이션의 렌더링일 수 있다. 컴퓨터 그래픽의 컨텍스트에서, 렌더링은 통상 컴퓨터 프로그램에 의해 모델로부터 이미지를 생성하는 프로세스로서 간주될 수 있다. 모델은 통상 3D 오브젝트의 기술(description)이고 엄격하게 정의된 언어 또는 데이터 구조로 표현될 수 있다. 모델은 기하학 구조(geometry), 시점(viewpoint), 텍스쳐(texture), 조명(lighting), 쉐이딩(shading), 움직임(motion) 및 임의의 다른 적절한 타입의 정보를 포함할 수 있다. 모델이 렌더링되는 이미지는 픽셀 더미(a collection of pixels)에 의해 형성될 수 있는 래스터(raster) 그래픽 이미지 또는 디지털 이미지일 수 있다. 본 개시물은 렌더링의 개념을 임의의 애플리케이션의 임의의 출력을 나타내는 이미지의 생성으로 확장한다. 렌더링은 2D 데이터 뿐만 아니라 3D 데이터를 포함하는 임의의 데이터에 기초하여 수행될 수 있다. 3D 모델에 기초하여 이미지를 생성하는 것에 더하여, 특정한 실시예는, 예를 들어, 제한없이, 웹 브라우징 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드 시트 애플리케이션, 멀티미디어 애플리케이션, 과학 및 의학 애플리케이션 및 게임 애플리케이션 등의 애플리케이션의 출력을 나타내는 이미지를 렌더링할 수 있다.
그러나, 상술한 바와 같이, 추가의 서버 및 GPU의 비용 때문에 서버측 그래픽 렌더링 아키텍쳐만이 저조하게 스케일링된다. 추가적으로, 최고 수요를 충족하기 위하여 서버/GPU 인프라스트럭쳐를 적절히 추가한 시스템은 종종 오프-피크(off-peak) 시간 동안 심하게 충분히 이용되지 않아, 낭비 또는 유휴 서버 또는 GPU 자원을 초래한다.
피어-투-피어 아키텍쳐는 피어 사이에서 태스크를 분할하는 기술에 잘 알려져 있다. 피어-투-피어 네트워크는 더 많은 노드가 네트워크에 진입함에 따라 시스템의 총 용량 및 자원을 증가시키는 이점을 제공한다. 예를 들어, 비트토렌트(BitTorrent) 네트워크에서, 파일을 공유 또는 "시드(seed)"하는 노드가 증가함에 따라, 파일을 요청하는 다른 노드로의 파일 전송이 더 빨라진다. 피어-투-피어 네트워크는 콘텐츠 전달 애플리케이션을 공유하고 스트리밍하는 파일에 있어서 일반적이지만, 그 분권화된 특성 때문에, 일반적으로 이들을 그래픽 렌더링 등의 실시간 동작에 부적절하게 만드는 높은 레이턴시(latency)를 겪는다. 이 개시물은 클라이언트 노드들에 그래픽 렌더링 태스크를 분담하는 중앙 집중 서버 기반 서버 모델을 제공하여, 그래픽 렌더링의 컨텍스트에서 피어-투-피어 아키텍쳐의 이점 중의 많은 것을 얻는다.
또한, 멀티-GPU 렌더링의 기존 방법은 저조하게 스케일링된다. 일반적으로, 멀티-GPU 시스템은 SFR(split frame rendering) 또는 AFR(alternative frame rendering)의 2가지 방법론 중의 하나를 이용한다. SFR에서, 각각의 GPU는 각각의 프레임의 일부를 렌더링한다. 그러나, 프레임의 일부가 복잡한 기하학 구조를 포함하고 프레임의 다른 부분이 비교적 간단한 기하학 구조를 갖는 등 프로세싱의 할당은 종종 불공평하다. 많은 분산 알고리즘은 일부의 그래픽 복잡성을 고려하지만, GPU의 수가 증가함에 따라, 분산 알고리즘은 점점 더 복잡해지고 그 자체로 프로세서 집약적이다. AFR은 라운드 로빈(round-robin) 방식으로 개별 GPU에 완전한 프레임의 렌더링을 분산하는 것을 포함한다. 그러나, 이 기술은 이전의 프레임에 앞서 다음 프레임의 렌더링에 의한 증가된 레이턴시 때문에 저조하게 스케일링된다. 추가적으로, GPU의 수가 프레임레이트의 큰 퍼센티지에 도달함에 따라, 다음의 GPU가 다음 프레임이 무엇인지를 미리 아는 것은 논리적으로 불가능하다.
본 개시물의 일 실시예는 경로 추적을 이용하여 주어진 3D 환경의 확산 조명을 렌더링함으로써 멀티-GPU 확장성 문제를 해결한다. 경로 추적은 오브젝트 상 또는 그를 통한 몇개의 바운스(bounce)를 통해 가상 카메라로부터 다수의 광선을 추적함으로써 가능한 한 가까운 광의 물리적 거동을 시뮬레이션하도록 시도하는 렌더링 기술이다. 경로 추적에 의해 제공되는 이미지 품질은 일반적으로 더 많은 계산 요구사항을 희생하고 종래의 렌더링 방법을 이용하여 생성된 이미지의 품질보다 우수하다. 경로 추적은 당연히, 소프트 쉐도우, 심도(depth of field), 모션 블러(motion blur), 코스틱스(caustics), 앰비언트 오클루젼(ambient occlusion), 및 간접 조명 등의 다른 방법(광선 추적 또는 스캔라인 렌더링)에 특별히 추가되어야 하는 많은 효과를 시뮬레이션한다. 정확도 및 편파적이지 않은 성질 때문에, 경로 추적은 다른 렌더링 알고리즘의 품질을 테스트할 때 기준 이미지를 생성하는데 사용된다. 그러나, 무한한 수의 가설 조명 경로 때문에, 렌더링된 장면 또는 프레임이 "완벽히 비추어진(perfectly lit)" 이미지로 수렴하기 전에 비교적 많은 수의 샘플이 계산되어야 한다. 경로 추적 샘플의 생성을 분산함으로써, 본 발명의 실시예는, 서버측 그래픽 렌더링과 전통적으로 연관된 비용의 증가 없이, 피어-투-피어 아키텍쳐의 무한한 확장성 및 이점, 즉, 클라우드소싱된 렌더링 프로세스에 참가하는 노드가 증가할 수록 출력 품질 및 렌더링 속도가 증가하는 것 등을 제공하는 분산 그래픽 렌더링 시스템을 제공한다.
도 1은 본 발명의 특정 구현예가 동작하는 예시적인 네트워크 환경을 나타낸다. 도 1에 도시된 바와 같이, 본 발명의 특정 구현예는 인터넷을 포함할 수 있는 네트워크 클라우드(60)에 동작가능하게 커플링된 비디오 송신 시스템(VTS)(20)을 포함하는 네트워크 환경에서 동작할 수 있다. 네트워크 클라우드(60)는 일반적으로 여기에 기재된 시스템 및 호스트가 통신할 수 있는 하나 이상의 상호접속된 네트워크를 나타낸다. 네트워크 클라우드(60)는 (인터넷 등의) 패킷 기반 광역 통신망, 개인 네트워크, 무선 네트워크, 위성 네트워크, 셀룰러 네트워크, 페이징 네트워크 등을 포함할 수 있다. 네트워크 클라우드(60) 내의 네트워크의 일부는 회선 교환망일 수 있다. 네트워크(60)를 포함하는 컴퓨터 네트워크 환경은 TCP/IP 프로토콜(예를 들어) 및/또는 다른 적절한 프로토콜을 채용하는 패킷 기반 통신 환경일 수 있고, 복수의 상호 접속된 디지털 패킷 송신 스테이션 또는 라우팅 노드를 갖는다. 클라이언트 노드(82 및 84)는 네트워크 서비스 제공자 또는 임의의 다른 적절한 수단을 통해 동작가능하게 네트워크 환경에 접속된다. 클라이언트 노드(82 및 84)는 퍼스널 컴퓨터 또는 셀폰 뿐만 아니라 랩탑 컴퓨터, 개인 휴대 단말기(PDA) 등의 다른 타입의 모바일 장치를 포함할 수 있다. 클라이언트 노드(82)는 주어진 프레임 또는 장면을 렌더링하는데 필요한 렌더링 태스크의 일부 또는 전부를 수행할 수 있는 GPU를 포함한다. 클라이언트 노드(84)는 PDA, 셀룰러 폰, 태블릿 PC, 포터블 게임 시스템 등의 저전력 장치를 포함할 수 있고 씬 클라이언트(thin-client)를 갖고 크라우드소싱된 렌더링 시스템에 참가하는데 있어서 적절한 그래픽 프로세싱 파워가 부족할 수 있다.
비디오 송신 시스템(20)은 하나 이상의 가상 세계, 하나 이상의 비디오 또는 영화 또는 클라이언트 노드(82 및 84) 상에 디스플레이되기 위하여 렌더링될 수 있는 임의의 3D 환경을 호스팅하는 네트워크 어드레싱가능 시스템이다. 비디오 송신 시스템(20)은 사용자가 컴퓨터 네트워크를 통해 확인된 웹 페이지, 비디오 및 다른 콘텐츠를 요청하고 수신할 수 있는 웹 사이트 및 서버 기능을 포함할 수 있다.
특정한 구현예에서, 비디오 송신 시스템(20)은 하나 이상의 물리적 서버(22) 및 하나 이상의 데이터 스토어(24)를 포함한다. 하나 이상의 물리적 서버(22)는 라우터(26)를 통해 컴퓨터 네트워크(60)에 동작가능하게 접속된다. 하나 이상의 물리적 서버(22)는 클라이언트 노드(82 및 84)로부터 요청을 수신하고 클라이언트 노드(82 및 84)에게 응답 데이터를 송신하는 등 사용자가 이용가능한 콘텐츠를 브라우징하도록 하는 기능을 호스팅한다. 라우터(26)로부터 네트워크 클라우드(60)로의 접속은 복수의 클라이언트 노드(82 및 84)로부터의 렌더링된 출력의 동시 수신 및 클라이언트 노드(82 및 84)로의 복합 렌더링된 출력의 송신을 지원하기에 충분한 대역폭을 가져야 한다. 비디오 송신 시스템(20)은 수신기 및 방송기로서 동작하고 라우터(26)에서의 파이프는 이러한 기능을 지원하기에 충분히 넓거나 높은 대역폭을 가져야 한다. 일 구현예에서, 하나 이상의 물리적 서버에 의해 호스팅된 기능은 웹 또는 HTTP 서버, RTSP 서버 등을 포함할 수 있다.
상술한 바와 같이, 물리적 서버(22)는 비디오 송신 시스템(20)을 지원하고 구현하는 것에 관한 기능을 호스팅한다. 일 구현예에서, 데이터 스토어(24)는 디지털 콘텐츠 데이터 오브젝트, 사용자 정보 및 다른 미디어 자산 등의 비디오 콘텐츠를 저장할 수 있다. 특정한 구현예에서, 콘텐츠 데이터 오브젝트 또는 콘텐츠 오브젝트는 데이터 파일 또는 레코드에서 일반적으로 저장되거나 구현되는 디지털 정보의 개별 아이템이다. 콘텐츠 오브젝트는 텍스트(예를 들어, ASCII, SGML, HTML), 이미지(예를 들어, jpeg, tif 및 gif), 그래픽(벡터 기반 또는 비트맵), 오디오, 비디오(예를 들어, mpeg) 또는 다른 멀티미디어 및 그 조합을 포함하는 많은 형태를 취할 수 있다. 콘텐츠 오브젝트 데이터는 또한 실행가능한 코드 오브젝트들, 오브젝트 또는 자산 정의(asset definition)들 등을 포함할 수 있다. 구조적으로, 콘텐츠 데이터 스토어(24)는 많은 클래스의 데이터 저장 및 관리 시스템을 함축한다. 특정한 구현예에서, 콘텐츠 데이터 스토어(24)는 데이터베이스 서버, 대용량 저장 매체, 미디어 라이브러리 시스템 등의 컴포넌트를 포함하는 임의의 적절한 물리적 시스템에 의해 구현될 수 있다.
특정한 실시예에서, 크라우드소싱된 렌더링 시스템은 소프트웨어 프로그램을 통해 구현된다. 특정한 실시예에서, 이하에서 "소프트웨어 스터브" 또는 간단히 "스터브(stub)"라 불리우는 소프트웨어 프로그램은 클라이언트 노드(82 및 84) 상에 설치되어 실행될 수 있다. 특정한 실시예에서, 스터브는 클라이언트 노드(82 및 84) 및 비디오 송신 시스템(20) 간의 네트워크 접속을 확립하고, 클라이언트 노드(82 및 84)로의 네트워크 접속을 통해 비디오 송신 시스템(20)으로부터 컴퓨터 소프트웨어 프로그램을 다운로드할 수 있다. 특정한 구현예에서, 비디오 송신 시스템(20)으로부터 클라이언트 노드(82/84)로 다운로드된 소프트웨어의 일부의 실행가능한 코드가 네트워크 접속을 통해 VTS(20)로부터 클라이언트(82/84)로 전송된 데이터 스트림에 삽입(embed)될 수 있다. 데이터 스트림을 수신하면, 스터브는 소프트웨어의 일부의 실행가능한 코드를 추출하여 그것을 클라이언트 상에서 실행되도록 직접 클라이언트(82/84)의 랜덤 액세스 메모리(RAM)에 로딩한다. 소프트웨어의 일부는 클라이언트의 임의의 영구 저장장치(예를 들어, 하드 드라이브)에 저장되거나 설치되지 않는다. 소프트웨어의 일부가 클라이언트(82/84) 상에서의 실행을 완료하면, 소프트웨어의 일부의 실행가능 코드가 로딩된 RAM 공간이 해제될 수 있고, 소프트웨어의 일부는 더이상 클라이언트(82/84) 상의 어디에도 존재하지 않는다. 특정한 실시예에서, 스터브 프로그램은 크라우드소싱된 그래픽 렌더링 시스템에 참가할 수 있는 클라이언트 노드(82) 상에는 렌더링 엔진 또는 애플리케이션을 설치하고 크라우드소싱된 렌더링에 참가하기 위하여 필요한 프로세싱 능력이 부족한 클라이언트 노드(84) 상에는 뷰어 애플리케이션 만을 설치한다.
특정한 실시예에서, 스터브는 클라이언트(82/84) 상에 저장되거나 설치된 독립형 소프트웨어 프로그램 또는 클라이언트(82/84) 상에 설치된 웹 브라우저에 대한 플러그인(plug-in) 또는 애드온(add-on)일 수 있다. 스터브는 컴퓨터 소프트웨어 프로그램을 개별 컴퓨터 시스템(예를 들어, CD, DVD, 네트워크 다운로딩 등)으로 분산하는 임의의 적절한 기존 방법을 이용하여 클라이언트(82/84) 상에 저장되거나 설치될 수 있다. 특정한 실시예에서, 스터브는 클라이언트 노드(82/84)의 많은 저장 용량을 사용하지 않도록 소프트웨어의 얇은 부분(즉, 사이즈가 작은)일 수 있다. 스터브는 독립형 소프트웨어 프로그램의 경우 자체적으로 실행되거나 플러그인 또는 애드온 소프트웨어의 경우 웹 브라우저를 통해 실행될 수 있다.
스터브를 이용하여 클라이언트(82/84) 상에 컴퓨터 소프트웨어 프로그램을 다운로드하고 런칭함으로써, 스터브 자체만이 클라이언트(82/84) 상에 영구적으로 저장 또는 설치될 필요가 있다. 소프트웨어의 다른 부분은, 클라이언트(82/84) 상에 저장 또는 설치될 필요없이 클라이언트(82/84) 상에 다운로드 및 런칭될 수 있으며, 이는 클라이언트(82/84)의 저장 능력의 사용을 감소시킬 수 있다. 또한, 소프트웨어의 일부가 클라이언트 노드(82/84) 중의 하나에서 실행되기 직전에 다운로드되기 때문에, 특정 실시예는 소프트웨어의 일부가 다운로드되고 런칭될 때마다 소프트웨어의 최신 (또는 임의의 원하는) 버전 제공을 용이하게 한다.
소프트웨어 스터브에 대한 상세한 설명은 공동 소유 미국 특허 출원, 2009년 11월 23일 제출되고 발명의 명칭이 "Stream-Based Software Application Delivery and Launching System"이고 그 전체가 참고로 여기에 포함된 미국 특허 출원 12/624,133를 참조한다.
도 1은 중앙 집중된 클라이언트-서버 아키텍쳐를 나타내지만, 본 개시물은 다수의 클라이언트 노드 간의 통신을 위한 임의의 방식의 네트워크 토폴로지를 고려한다. 특정한 실시예에서, 클라이언트 노드는 피어-투-피어 네트워크로서 배치될 수 있고, 하나의 특정한 노드는 중앙 노드로서 지정되고 실질적으로 VTS(20)와 동일한 기능을 수행한다. 특정한 실시예에서, 링 토콜로지(ring topology)가 이용될 수 있고, 특정한 피어가 실질적으로 VTS(20)와 동일한 기능을 수행하는 링 리더로서 지정될 수 있다. 본 개시물은, 제한되지 않지만, 버스, 스타, 메쉬 및 트리 네트워크 토폴리지를 포함하는 피어 노드들에 그래픽 프로세싱을 분산하는 임의의 적절한 네트워크 토폴로지를 고려한다.
도 2는 모든 클라이언트에 대한 동일한 시점으로부터 단일 프레임의 렌더링을 크라우드소싱하는 예시적인 방법을 나타낸다. 예를 들어, 접속된 클라이언트 노드(82 및 84)가 모두 동일한 영화 또는 비디오, 예를 들어, 토이 스토리 3 등의 컴퓨터 생성 영화를 시청하는 도 2의 방법이 이용될 수 있다. VTS(20)에 의해 수행되는 액션은 도 2의 왼쪽 절반에 도시되고, 참가 노드들(82)의 액션은 상부 우측 부분에 도시되고, 모든 클라이언트 노드(82 및 84)의 액션은 하부 좌측 부분에 도시된다.
단계(201)에서, VTS(20)는 프레임을 렌더링하는데 필요한 렌더 자산(render asset)들에 액세스한다. 특정한 실시예에서, 렌더 자산들은 저장되어 후속으로 데이터 스토어(24)로부터 검색될 수 있다. 특정한 실시예에서, 렌더 자산들은 동적으로 VTS(20)에 의해 생성될 수 있다. 특정한 실시예에서, 렌더 자산들은 주어진 환경, 장면 또는 프레임에서 실제 3D 와이어프레임 모델일 수 있다. 그러나, 이 방법은 대역폭 집약적이고, 3D 오브젝트의 압축을 이용하지 않는다. 특정한 오브젝트에서, 렌더 자산은 카메라 시점으로부터의 큐빅 맵(cubic map)이다. 특정한 실시예에서, 렌더 자산은 픽셀 또는 프래그먼트 쉐이더(fragment shader)를 이용하여 주어진 프레임에 대한 픽셀 값으로 렌더링될 수 있는 VSDO라 불리우는 계층화된 큐브 맵을 포함한다.
큐브 맵은 필수적으로 큐브로 스티칭된 6개의 텍스쳐 맵이다. 각각의 텍스쳐 맵은 공통 기준점에 대하여 장면에 관한 픽셀 정보인 텍셀(texel)을 포함한다. 큐브의 면(face) 상의 텍스쳐 맵은 윈도우 사각형으로서 큐브의 면을 이용하여 공통 기준점으로부터 장면을 렌더링함으로써 생성될 수 있다. 각각의 텍셀은 물질 특성(굴절률, 색, 등), 기준점으로부터의 거리 및 표면 법선 벡터를 포함할 수 있다. 장면을 나타내는 계층화된 텍스쳐 맵의 세트는 뎁스 필링(depth peeling)을 이용하여 얻을 수 있다. 필링 패스(pass)의 수는 제한되어 층의 수를 제어할 수 있다. VSDO는 초기에 렌더링 장치 상에서 그때 그때(on-the-fly) 생성되거나 비디오에 대한 요청에 응답하여 후속의 송신을 위해 저장될 수 있다. 렌더링 장치는 뎁스 필링 또는 임의의 다른 적절한 프로세스로 다수의 렌더 타겟 및 큐브 맵을 이용하여 GPU 상에서 VSDO를 효율적으로 생성할 수 있다.
(장면의 뎁스 소트 층(depth-sorted layer)으로 구성된) 계층화된 텍셀 어레이 내의 각각의 텍셀은 텍셀의 뎁스 필링 층 내에 기준점과 가장 먼 오브젝트 포인트 간의 모든 오브젝트 포인트에 대한 정보를 저장한다. 계층화된 큐브 맵에 대응하는 장면의 렌더링된 표시를 생성하기 위하여, 그래픽 프로세싱 유닛은 공통 근원으로부터 광선을 추적하여 근원으로부터 보이는 포인트에서 래디언스를 계산하는 프래그먼트 쉐이더 유닛을 이용하여 장면 내의 오브젝트들과 근원 간의 거리들을 결정할 수 있다. 렌더 프로세싱은 일반적으로 장면 기하학구조를 래스터화하고 광선이 픽셀들을 통과하는 제1 히트(hit)를 찾는 것을 포함한다. VSDO 및 VSDO 렌더링의 상세한 설명은, 공동 소유 미국 특허 출원, 2009년 6월 15일에 제출되고 발명의 명칭이 "Re-Utilization of Render Assets for Video Compression"이고 그 전체가 참고로 여기에 포함된 미국 특허 출원 12/484,462를 참조한다.
단계(202)에서, VTS(20)는 렌더 자산들, 이 예에서, 장면 또는 환경에 대한 VSDO를 크라우드소싱된 렌더링 프로세스에 참가할 수 있는 GPU를 갖는 임의의 클라이언트 노드(82)로 송신한다. 특정한 실시예에서, 주어진 장면의 제1 프레임만은 클라이언트로 송신될 VSDO를 필요로 하고, 다음의 프레임들은 단지 카메라 또는 개별 오브젝트가 어떻게 변했는지를 기술하는 드로우(draw) 명령을 필요로 한다. 특정한 실시예에서, 특정 장면의 정적 엘리먼트는 하나의 VSDO로서 송신될 수 있고 장면의 동적 엘리먼트는 개별 VSDO로서 송신될 수 있고, 따라서, 활발히 변하는 장면에서도, 동적 VSDO만이 업데이트 또는 송신될 필요가 있다. 이 개시물은 이전에 송신된 VSDO의 재사용을 통해 비디오 데이터를 압축하거나 대역폭을 절약하는 임의의 적절한 방식을 고려한다.
VTS(20)는 또한 크라우드소싱된 렌더링 프로세스에 참가하는 각각의 클라이언트 노드(82)로 고유 공간 위치를 송신한다. 고유 공간 위치는 경로 추적을 위한 가상 눈 또는 렌즈의 위치를 나타내고, 각각의 클라이언트 노드(82)는 (절대 불가능한) 광원을 히트(hit)할때까지 자신의 고유 공간 위치로부터 역으로 가설 광선을 추적한다. 특정한 실시예에서, 각각의 클라이언트 노드(82)에 할당된 고유 공간 위치는 VTS(20)에 의해 랜덤하게 할당된다. 특정한 실시예에서, 고유 위치는 광원을 스트라이크(strike)할 가능성이 높은 광선을 확인하려고 시도하는 경로 추적 알고리즘에 기초한다. 특정한 실시예에서, 경로 추적 알고리즘은 이전에 추적된 성공적인 경로를 약간 변경한다. 특정한 실시예에서, 고유 공간 위치를 선택하는 경로 추적 알고리즘은 (메트로폴리스 광 전송에 기재된) 몬테 카를로(Monte Carlo), 카지야(Kajiya) 또는 메트로폴리스-해스팅(Metropolis-Hastings) 알고리즘이다. 본 개시물은 고유 공간 위치를 크라우드소싱된 렌더링 프로세스에 참가한 클라이언트 노드들에 할당하는 임의의 적절한 경로 추적 알고리즘 또는 방법을 고려한다.
단계(203)에서, 클라이언트 노드(82)는 고유 공간 위치로부터 수신된 렌더 자산들 상에서 경로 추적을 수행한다. 상술한 바와 같이, 렌더 자산은 하나 이상의 VSDO, 이전에 송신된 VSDO에 대한 변환 또는 드로우 명령 또는 그 둘의 임의의 조합일 수 있다. 특정한 실시예에서, 클라이언트 노드(82)는 양방향 경로 추적을 수행한다. 본 개시물은 경로 추적 샘플을 얻는 임의의 적절한 방식을 고려한다. 경로 추적 동작의 결과로서, 클라이언트 장치(82)는 프레임의 확산 조명의 대략적 추정인 샘플 프레임을 생성한다. 클라이언트 노드(82)는, 장면의 조명의 추정이 빈약하고 매우 잡음이 많고 비교적 빨라도, 이들 샘플 프레임을 생성할 수 있다.
단계(204)에서, 크라우드소싱된 렌더링 프로세스에 참가하는 각각의 클라이언트 노드(82)는 자신의 렌더링된 프레임을 VTS(20)로 송신한다. 특정한 실시예에서, 조명 데이터는 VSDO에 추가될 수 있고, 클라이언트 노드(82)는 조명 데이터에 의해 향상된 VSDO를 다시 송신할 수 있다. 특정한 실시예에서, 광 맵 또는 VSDO로 맵핑된 조명 정보를 포함하는 텍스쳐만이 VTS(20)로 다시 송신된다. 본 개시물은 대역폭 최적화 또는 비디오 압축의 임의의 적절한 방식을 고려한다.
단계(205)에서, VTS(20)는 수신된 프레임으로부터 복합 프레임을 생성한다. 광의 가산(additive) 성질 때문에, VTS(20)는 모든 수신 프레임을 함께 더하고 수신 프레임의 수로 나눔으로써 복합 프레임을 신속하게 생성할 수 있다. 특정한 실시예에서, VTS(20)는 큰 플로팅 포인트 버퍼를 이용하여 합산 결과를 저장한다. 특정한 실시예에서, VTS(20)는 수신된 광 맵으로부터 복합 광 맵을 생성하고 복합 맵을 VSDO에 맵핑한다. 본 개시물은 복합 프레임을 생성하는 임의의 적절한 방식을 고려한다. 복합 프레임은 장면의 복잡성 및 샘플의 수에 따라 완벽한 라디오시티(radiosity) 조명에 수렴해야 한다. 예를 들어, 8개의 개별 샘플을 생성하는 8개의 클라이언트 노드는 프레임의 상당히 양호한 표시를 생성하고, 64개의 샘플은 매우 적은 잡음을 갖는 복합 프레임을 산출하고, 1000개의 샘플은 완벽한 확산 조명을 갖는 프레임을 생성할 수 있다.
단계(206)에서, VTS(20)는 비디오 스트림을 시청하는 모든 클라이언트 노드(참가 노드(82) 및 비참가 노드(84))에 복합 프레임을 송신하고, 단계(207)에서, 개별 클라이언트 노드(82/84)는 자신의 디스플레이 상에 수신된 복합 프레임을 디스플레이한다. 단계(208)에서, 프로세스는 종료하고, VTS는 비디오 시퀀스 내의 다음의 프레임을 위해 렌더 자산, 변환 및 드로우 명령 또는 그 둘의 혼합을 송신한다.
도 3은 클라이언트 노드(82)에 의해 수신된 렌더링된 프레임의 예를 나타낸다. 각각의 프레임(301-320)은 주어진 장면에 대한 고유 공간 위치로부터 경로 추적을 수행함으로써 얻어진 개별 클라이언트 노드(82)로부터의 출력을 나타낸다. 프레임(301-320)은 명료성에 있어서 변하고, 예를 들어, 프레임(301 및 302)은 장면 내의 오브젝트에 대한 매우 작은 세부사항을 나타내지만, 프레임(320)은 잡음이 있지만 장면의 상당히 양호한 표시를 시청자에게 제공한다. 도 3a는 프레임(301-320)을 더함으로써 생성된 예시적인 복합 프레임(321)을 나타낸다. 여전히 다소 잡음이 있지만, 복합 프레임은 장면의 선명한 화상을 제공하고 부드러운 반사, 쉐도우, 투명성 및 코스틱스(caustics)를 포함하는 매우 정확한 확산 조명을 포함한다. 도 3 및 3a는 경로 추적에 의해 생성된 20개의 프레임의 조합을 통해 얻을 수 있는 품질의 표시 뿐만 아니라 광의 가산 성질을 나타낸다. 따라서, 본 발명은 비트토렌트 내의 "시딩(seeding)" 등의 피어-투-피어 파일 공유와 유사하고, 참가 클라이언트 노드(82)의 수가 증가함에 따라 출력을 요청한 모든 노드로 전달되는 렌더링된 출력의 품질 및 렌더링의 속도를 증가시킨다. 예를 들어, 장면을 위해 합성될 샘플의 요구수가 참가 노드의 수를 초과하는 특정 실시예에서, 중앙 서버 또는 참가 노드는 다수의 렌더를 수행해야 하고, 따라서, 총 렌더링 시간을 증가시킨다. 호환가능한 GPU를 갖는 더 많은 클라이언트 노드가 장면을 "시드"함에 따라, 렌더링 속도는 증가한다.
도 4는 본 발명의 일 실시예에 따라 복수의 클라이언트에게 환경의 렌더링을 분산시키는 예시적인 방법을 나타낸다. 특정한 실시예에서, VTS(20)의 다수의 사용자가 상호작용 프로그램을 이용할 수 있고, 각 클라이언트 노드(82/84)의 디스플레이는 특정 카메라 시점에 록(lock)되지 않는다. 예를 들어, 복수의 사용자는 마야(Maya) 또는 3D 스튜디오 맥스(3D Studio Max) 등의 CAD(computer aided design) 프로그램을 이용하여 다양한 상이한 각으로부터 독립적으로 특정한 환경을 볼 수 있다. 다른 예로서, 다수의 클라이언트 노드가 동일한 환경에서 상호작용하는 다수의 사용자와 비디오 게임을 할 수 있다. 예를 들어, 복수의 사용자가 모두 가변 프로세싱 파워를 갖는 장치를 통해 월드어브워크래프트(World of Warcraft) 내의 특정 룸에 있을 수 있다.
도 5는 이러한 시나리오의 예를 나타낸다. 도 5에서, 3D 환경(500)은 몇개의 광원(503) 및 반사 풀(reflection pool)(504)을 포함한다. 반사 풀(504)은 렌더링될 때 확산 조명 뿐만 아니라 스페큘러 조명을 포함할 수 있다. 2개의 사용자 제어 캐릭터(501 및 502)가 환경(500) 내에 있다. 각각의 사용자는 특정 카메라 뷰 및 뷰포트(viewport)(501a 및 502a)를 갖는다. 환경(500) 상의 광원(503)으로부터의 반사를 포함하는 스페큘러 조명은 광선의 경로 및 각 사용자의 뷰포트(501a 및 502a)의 지식을 필요로 한다. 그러므로, 확산 조명은, 특히 액션 게임 또는 제1인칭 슈팅 게임 등의 빠른 실시간 애플리케이션에서, 스페큘러 조명과 비교하여 비교적 느리게 이동하고 정적이다. 이 예의 목적으로, 사용자(501)는 파워풀한 GPU를 갖는 퍼스널 컴퓨터 또는 네트워크 접속 게임기 등의 크라우드소싱된 렌더링 프로세스(클라이언트 노드(82))에 참가할 수 있는 장치를 이용하고 있고, 사용자(502)는 모바일 폰 또는 태블릿 컴퓨터 등의 자신의 스페큘러 조명을 렌더링하기에 그래픽 프로세싱 용량이 부족한 씬 클라이언트(thin-client) 장치를 이용하고 있다.
도 4로 되돌아가서, 단계(401)에서, VTS(20)는 특정 환경(500)에서 VSDO를 생성 또는 액세스한다. VTS(20)는 클라이언트 노드(82 및 84) 상에서 실행되는 소프트웨어 스터브로부터의 요청에 응답하여 VSDO를 생성할 수 있다. 예를 들어, 클라이언트 노드(82/84)의 사용자가 게임 애플리케이션을 런칭하거나 자신의 플레이어가 특정 환경으로 이동하거나 특정 방향을 바라보도록 지시하는 명령을 VTS에 송신하면, VTS(20)는 사용자의 캐릭터 주변의 환경에 오브젝트에 대한 VSDO를 생성한다.
단계(402)에서, VTS(20)는 각각의 참가 클라이언트 노드(82)로 VSDO 및 고유 공간 위치를 송신한다. 특정한 실시예에서, VTS(20)는 클라이언트의 사용자가 새로운 환경에 들어갈때만 VSDO를 송신한다. 추가적으로, 단계(402)에서, VTS(20)는 참가 클라이언트 노드(82)에 고유 위치 지시기를 송신한다. 이 고유 위치 지시기는 클라이언트 노드(82)에 의해 표시된 사용자의 뷰포트(501a)와 독립적이고 오히려 확산 조명의 산출을 위해 경로 추적을 시작하는 랜덤 포인트이다. 특정한 실시예에서, 각각의 클라이언트 노드(82)에 할당된 고유 공간 위치는 VTS(20)에 의해 랜덤하게 할당된다. 특정한 실시예에서, 고유 위치는 광원을 스트라이크할 가능성이 높은 광선을 식별하도록 시도하는 경로 추적 알고리즘에 기초한다. 특정한 실시예에서, 경로 추적 알고리즘은 이전에 추적된 성공적인 경로를 약간 변경한다. 특정한 실시예에서, 고유 공간 위치를 선택하는 경로 추적 알고리즘은 (메트로폴리스 광 전송에 기재된) 몬테 카를로(Monte Carlo), 카지야(Kajiya) 또는 메트로폴리스-해스팅(Metropolis-Hastings) 알고리즘이다. 본 개시물은 고유 공간 위치를 크라우드소싱된 렌더링 프로세스에 참가한 클라이언트 노드에 할당하는 임의의 적절한 경로 추적 알고리즘 또는 방법을 고려한다.
단계(403)에서, 클라이언트 노드(82)는 경로 추적을 수행하여 환경(500)에 대한 광 맵을 생성한다. 광 맵은 단지 VSDO에 맵핑 또는 스키닝(skin)될 수 있는 주변 또는 확산 조명 데이터를 포함하는 텍스쳐이다. 광 맵이 VSDO에 맵핑되고 VSDO가 렌더링 엔진에 의해 렌더링되면, 장면 또는 환경은 사용자에게 적절하게 비추어진다. 특정한 실시예에서, 광 맵은 단지 VSDO의 추가 층이다. 특정한 실시예에서, 광 맵은 VSDO와 별도로 송신될 수 있다. 특정한 실시예에서, 광 맵은 JPG 또는 DCT(discrete cosine transfer) 등의 2D 압축 알고리즘을 이용하여 압축될 수 있다.
단계(404)에서, 각각의 참가 클라이언트 노드(82)는 자신의 광 맵을 VTS(20)로 송신한다. 특정한 실시예에서, 각각의 클라이언트 노드(82)는 향상된 VSDO를 다시 송신한다. 특정한 실시예에서, 각각의 클라이언트 노드(82)는 송신 전에 생성된 광 맵을 압축한다. 본 개시물은 렌더링된 확산 조명 정보를 VTS(20)로 반환하는 임의의 적절한 방식을 고려한다.
단계(405)에서, VTS(20)는 클라이언트 노드(82)로부터 수신된 광 맵에 기초하여 복합 광 맵을 생성한다. 광의 가산 특성은 개별 프레임에 적용되는 것과 동일하게 광 맵에 적용될 수 있다. 특정 실시예에서, VTS(20)는 모든 수신 광 맵의 합산의 결과를 큰 플로팅 포인트 버퍼에 저장하고 그 결과를 수신된 광 맵의 수로 나눔으로써 복합 광 맵을 생성한다. 특정한 실시예에서, VTS는 수신된 클라이언트 광 맵의 수 또는 문턱 시간량에 도달한 후에 복합 광 맵을 자동으로 생성한다. 각 클라이언트 노드의 광 맵은 소정의 문턱값을 지나 확산 조명의 품질을 단지 미미하게 증가시키기 때문에, VTS(20)는 레이턴시 때문에 늦게 도착한 클라이언트 광 맵을 기다리지 않고 복합 광 맵을 생성하도록 선택할 수 있다. 특정한 실시예에서, VTS(20)는 리프레쉬마다 가장 높은 품질의 광 맵을 얻기 위하여 복합 광 맵을 생성하기 전에 모든 단일 클라이언트 노드 광 맵이 수신될 때까지 기다린다. 확산 조명이 시점에 독립적이고 (광원이 이동되지 않으면) 환경에 따라 급격히 변하지 않기 때문에, 자신의 시점을 변경하는 사용자 패닝(panning)은 환경의 확산 조명을 리프레시하는데 레이턴시를 의식할 가능성이 적지만, 사용자의 시점에 직접 관련된 스페큘러 조명을 렌더링하는데 있어서의 레이턴시는 매우 뚜렷하다.
단계(406)에서, VTS(20)는 참가 클라이언트 노드(82)에 복합 광 맵을 다시 송신한다. 특정한 실시예에서, VTS(20)는 복합 광 맵을 구성하는 층에 의해 향상된 환경(500)에 대한 하나 이상의 VSDO를 다시 송신한다. 특정한 실시예에서, VTS(20)는 복합 광 맵만을 송신한다. 특정한 실시예에서, 복합 광 맵은 2D 압축 기술을 이용하여 압축될 수 있다. 특정한 실시예에서, VTS(20)는 단지 클라이언트 노드(82)에 송신된 동일한 VSDO에 대한 이전의 광 맵과 복합 광 맵 간의 변화를 송신한다. 이 개시물은 클라이언트 노드(82)에 확산 조명 데이터를 송신하는데 있어서 대역폭 절약의 임의의 적절한 메카니즘을 고려한다.
단계(407)에서, 참가 클라이언트 노드(82)는 (시점(501a)등의) 자신의 시점에 기초하여 환경에 대한 스케큘러 조명을 렌더링한다. 참가 클라이언트 노드(82)가 확산 조명에 대한 경로 추적을 수행하기에 충분히 파워풀한 GPU를 가지기 때문에, 스페큘러 조명을 렌더링하기에 충분히 파워풀해야 한다. 단계(407)에서의 스페큘러 조명의 생성과 동시에, 각각의 클라이언트 노드(82)에 대한 사용자의 뷰포트(501a 등)는 클라이언트 노드(82)의 디스플레이 상에서 렌더링된다.
사용자(502)가 특정 실시예에서 경로 추적을 수행하기에 충분히 파워풀한 GPU가 부족한 비참가 클라이언트 노드(84)를 이용하기 때문에, VTS(20)는 자신의 시점 종속 스페큘러 조명을 수행하기에 프로세싱 파워가 부족한 클라이언트 장치(84)를 상정한다. 따라서, VTS(20)는 클라이언트 노드(84) 서버 측에 대한 (뷰포트(502a) 등의) 전체 뷰포트를 렌더링한다.
단계(409)에서, VTS(20)는 환경에 대한 VSDO, 복합 광 맵 및 각 접속 클라이언트 노드(84)로부터 수신된 카메라 정보에 기초하여 씬 클라이언트 노드(84)의 뷰포트를 렌더링한다. 특정한 실시예에서, VTS(20)는 VSDO의 근원 및 각 클라이언트(84)의 기준점(카메라 뷰포트)의 차를 보정하는 히트(hit) 기능을 이용한다.
단계(410)에서, VTS(20)는 각각의 씬 클라이언트(84)에 대한 렌더링된 뷰포트 프레임을 각각의 클라이언트로 송신한다. 특정한 실시예에서, 프레임은 2D 압축 기술을 통해 압축될 수 있다. 단계(411)에서, 클라이언트 장치(84)는 자신의 각각의 디스플레이 상에서 자신이 수신한 프레임을 디스플레이한다.
따라서, 본 발명의 특정한 구현예는 피어-투-피어 같은 품질을 갖는 충분히 조정가능한 분산 렌더링 아키텍쳐를 제공하고, 최종 렌더링된 이미지의 품질은 분산 렌더링 시스템에 참가한 클라이언트 노드의 수와 직접 상관된다.
특정 실시예는 네트워크 환경에서 구현될 수 있다. 도 6은 예시적인 네트워크 환경(600)을 나타낸다. 네트워크 환경(600)은 하나 이상의 서버(620) 및 하나 이상의 클라이언트(630)를 서로 커플링하는 네트워크(610)를 포함한다. 특정한 실시예에서, 네트워크(610)는 인트라넷, 엑스트라넷, VPN(virtual private network), LAN(local area network), 무선 LAN(WLAN), WAN(wide area network), MAN(metropolitan area network), 통신 네트워크, 위성 네트워크, 인터넷의 일부, 또는 다른 네트워크(610) 또는 이러한 2개 이상의 네트워크(610)의 조합이다. 본 개시물은 임의의 적절한 네트워크(610)를 고려한다.
하나 이상의 링크(650)는 서버(620) 또는 클라이언트(630)를 네트워크(610)에 커플링한다. 특정한 실시예에서, 하나 이상의 링크(650)는 각각 하나 이상의 유선, 무선 또는 광 링크(650)를 포함한다. 특정한 실시예에서, 하나 이상의 링크(650)는 각각 인트라넷, 엑스트라넷, VPN, LAN, WLAN, WAN, MAN, 통신 네트워크, 위성 네트워크, 인터넷의 일부, 다른 링크(650) 또는 이러한 2개 이상의 링크(650)의 조합을 포함한다. 본 개시물은 서버(620) 및 클라이언트(630)를 네트워크(610)에 커플링하는 임의의 적절한 링크(650)를 고려한다.
특정한 실시예에서, 각각의 서버(620)는 단일 서버이거나 다수의 컴퓨터 또는 다수의 데이터센터를 포괄하는 분산 서버일 수 있다. 서버(620)는 예를 들어, 제한없이, 웹 서버, 뉴스 서버, 메일 서버, 메시지 서버, 광고 서버, 파일 서버, 애플리케이션 서버, 교환 서버, 데이터베이스 서버 또는 프록시 서버 등의 다양한 타입일 수 있다. 특정한 실시예에서, 각각의 서버(620)는 하드웨어, 소프트웨어, 매립된 로직 컴포넌트 또는 서버(620)에 의해 구현되거나 지원되는 적절한 기능을 수행하는 이러한 2개 이상의 컴포넌트의 조합을 포함할 수 있다. 예를 들어, 웹 서버는 일반적으로 웹 페이지 또는 웹 페이지의 특정 엘리먼트를 포함하는 웹사이트를 호스팅할 수 있다. 특히, 웹 서버는 HTML 파일 또는 다른 파일 타입을 호스팅하거나 요청시 파일을 동적으로 생성 또는 구성하여 이들을 클라이언트(630)로부터의 HTTP 또는 다른 요청에 응답하여 클라이언트(630)로 전달할 수 있다. 메일 서버는 일반적으로 다양한 클라이언트(630)에 전자 메일 서비스를 제공할 수 있다. 데이터베이스 서버는 일반적으로 하나 이상의 데이터 스토어에 저장된 데이터를 관리하는 인터페이스를 제공할 수 있다.
특정한 실시예에서, 각각의 클라이언트(630)는 하드웨어, 소프트웨어, 매립된 로직 컴포넌트 또는 클라이언트(630)에 의해 구현되거나 지원되는 적절한 기능을 수행할 수 있는 이러한 2개 이상의 컴포넌트의 조합을 포함하는 전자 장치일 수 있다. 예를 들어, 제한없이, 클라이언트(630)는 데스크탑 컴퓨터 시스템, 노트북 컴퓨터 시스템, 넷북 컴퓨터 시스템, 핸드헬드 전자 장치 또는 모바일 전화일 수 있다. 클라이언트(630)는 클라이언트(630)의 네트워크 사용자가 네트워크(610)를 액세스할 수 있게 한다. 클라이언트(630)는 마이크로소프트 인터넷 익스플로러 또는 모질라 파이어폭스(Mozilla Firefox) 등의 웹 브라우저를 가질 수 있고 구글 툴바 또는 야후 툴바 등의 하나 이상의 애드온, 플러그인, 또는 다른 익스텐션(extension)을 가질 수 있다. 클라이언트(630)는 자신의 사용자가 다른 클라이언트(630)의 다른 사용자와 통신할 수 있게 한다. 본 개시물은 임의의 적절한 클라이언트(630)를 고려한다.
특정한 실시예에서, 하나 이상의 데이터 저장장치(640)는 하나 이상의 링크(650)를 통해 하나 이상의 서버(620)에 통신가능하게 링크될 수 있다. 특정한 실시예에서, 데이터 저장장치(640)는 다양한 타입의 정보를 저장하는데 사용될 수 있다. 특정한 실시예에서, 데이터 저장장치(640)에 저장된 정보가 특정 데이터 구조에 따라 구성될 수 있다. 특정한 실시예는 서버(620) 또는 클라이언트(630)가 데이터 저장장치(640)에 저장된 정보를 관리(예를 들어, 검색, 변경, 추가 또는 삭베)하도록 하는 인터페이스를 제공한다.
특정한 실시예에서, 각각의 서버(620)는 하나 이상의 클라이언트(630)에 동시에 서비스를 제공하고 자신이 지원하는 클라이언트(630)에 대하여 렌더링을 수행할 수 있다. 서버(620)는 특정한 프레임으로서의 각각의 렌더링 이미지로 비디오 스트림 내의 렌더링 이미지를 인코딩함으로써 자신이 지원하는 특정 클라이언트(630)에 대하여 렌더링된 이미지를 송신하고, 비디오 스트림을 클라이언트(630)로 송신할 수 있다. 비디오 스트림의 수신시, 클라이언트(630)는 비디오 스트림을 디코딩하여 디스플레이될 이미지 프레임을 추출할 수 있다.
특정한 실시예는 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합으로서 구현될 수 있다. 예를 들어, 제한없이, 하나 이상의 컴퓨터 시스템은 특정 로직 또는 소프트웨어를 실행하여 여기에 기재되고 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행할 수 있다. 컴퓨터 시스템 중의 하나 이상은 적절한 곳에서 단일이거나 다수의 컴퓨터 시스템 또는 다수의 데이터센터에 걸쳐 분산될 수 있다. 본 개시물은 임의의 적절한 컴퓨터 시스템을 고려한다. 특정한 실시예에서, 여기에 기재되거나 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행하는 것은 하나 이상의 특정한 지리적 위치로 반드시 제한될 필요가 없고 시간 제한을 반드시 가질 필요가 없다. 일 예로서, 제한없이, 하나 이상의 컴퓨터 시스템은 적절한 곳에서 "실시간", "오프라인", "배치(batch) 모드", 상술한 임의의 조합으로 자신의 기능을 수행할 수 있다. 컴퓨터 시스템의 하나 이상은 적절한 곳에서 상이한 프로세싱을 이용하여 상이한 시간에 상이한 위치에서 자신의 기능의 하나 이상의 부분을 수행할 수 있다. 여기서, 로직에 대한 참조는 적절한 곳에서 소프트웨어를 포함하거나 그 반대일 수 있다. 소프트웨어에 대한 참조는 적절한 곳에서 하나 이상의 컴퓨터 프로그램을 포함하거나 그 반대일 수 있다. 소프트웨어에 대한 참조는 적절한 곳에서 데이터 및/또는 명령을 포함하거나 그 반대일 수 있다. 마찬가지로, 데이터에 대한 참조는 적절한 곳에서 명령을 포함하거나 그 반대일 수 있다.
하나 이상의 컴퓨터 판독가능 저장 매체는 특정한 실시예를 구현하는 소프트웨어를 저장하거나 구현할 수 있다. 컴퓨터 판독가능 매체는 적절한 곳에서 소프트웨어를 나르거나(carry), 전달하거나, 포함하거나, 홀딩하거나, 유지하거나, 전파하거나, 보유하거나, 저장하거나, 송신하거나, 운송하거나, 구현할 수 있다. 컴퓨터 판독가능 매체는 적절한 곳에서 생물, 화학, 전자, 전자기, 적외선, 자기, 광, 퀀텀 또는 다른 적절한 매체 또는 이러한 2개 이상의 매체의 조합일 수 있다. 컴퓨터 판독가능 매체는 하나 이상의 나노미터-스케일 컴포넌트를 포함하거나 나노미터-스케일 설계 또는 제조를 구현할 수 있다. 컴퓨터 판독가능 저장 매체의 예는, 제한되지 않지만, 컴팩트 디스크(CD), FPGA(field-programmable gate arrays), 플로피 디스크, 플롭티컬(floptical) 디스크, 하드 디스크, 홀로그래픽 저장 장치, (ASIC(application-specific integrated circuit) 등의) 집적 회로, 자기 테이프, 캐시, 프로그래머블 로직 장치(PLD), 랜덤 액세스 메모리(RAM) 장치, 리드 온리 메모리(ROM) 장치, 반도체 메모리 장치 및 다른 적절한 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
특정 실시예를 구현하는 소프트웨어는 적절한 곳에서 (절차 또는 객체 지향일 수 있는) 임의의 적절한 프로그래밍 언어 또는 프로그래밍 언어의 조합으로 기입될 수 있다. (단일- 또는 다수-프로세서 컴퓨터 시스템 등의) 임의의 적절한 타입의 컴퓨터 시스템 또는 시스템들은 적절한 곳에서 특정 실시예를 구현하는 소프트웨어를 실행할 수 잇다. 범용 컴퓨터 시스템은 적절한 곳에서 특정 실시예를 구현하는 소프트웨어를 실행할 수 있다.
예를 들어, 도 7은 특정한 실시예의 하나 이상의 부분을 구현하기에 적합한 예시적인 컴퓨터 시스템(700)을 나타낸다. 본 개시물은 특정한 구성에서 특정한 컴포넌트를 갖는 특정한 컴퓨터 시스템(700)을 설명하고 도시하지만, 본 개시물은 임의의 적절한 구성에서 임의의 적절한 컴포넌트를 갖는 임의의 적절한 컴퓨터 시스템을 고려한다. 또한, 컴퓨터 시스템(700)은 예를 들어 하나 이상의 집적 회로(IC), 하나 이상의 인쇄 회로 기판(PCB), 또는 (모바일 전화 또는 PDA 등의) 하나 이상의 핸드헬드 또는 다른 장치, 하나 이상의 퍼스널 컴퓨터, 또는 하나 이상의 수퍼 컴퓨터 등의 임의의 적절한 물리적 형태를 가질 수 있다.
시스템 버스(710)는 컴퓨터 시스템(700)의 서브시스템을 서로 연결한다. 여기에서, 버스에 대한 참조는 공통 기능을 제공하는 하나 이상의 디지털 신호 라인을 포함한다. 본 개시물은 임의의 적절한 버스 아키텍쳐를 갖는 (하나 이상의 메모리 버스, 하나 이상의 주변 버스, 하나 이상의 로컬 버스 또는 상기 조합 등의) 임의의 적절한 버스 구조를 포함하는 임의의 적절한 시스템 버스(710)를 고려한다. 버스 아키텍쳐의 예는, 제한되지 않지만, ISA(Industry Standard Architecture) 버스, EISA(Enhanced ISA) 버스, MCA(Micro Channel Architecture) 버스, VLB(Video Electronics Standards Association local) 버스, PCI(Peripheral Component Interconnect) 버스, PCI-X(PCI-Express) 버스, 및 AGP(Accelerated Graphics Port) 버스를 포함한다.
컴퓨터 시스템(700)은 하나 이상의 프로세서(720)(또는 중앙 처리 장치(CPU))를 포함한다. 프로세서(720)는 명령, 데이터 또는 컴퓨터 어드레스의 일시적 로컬 저장을 위한 캐시(722)를 포함할 수 잇다. 프로세서(720)는 메모리(730)를 포함하는 하나 이상의 저장 장치에 결합된다. 메모리(730)는 RAM(732) 및 ROM(734)를 포함할 수 있다. 데이터 및 명령은 프로세서(720) 및 RAM(732) 사이에서 양방향으로 전송될 수 있다. 데이터 및 명령은 프로세서(720) 로부터 ROM(734)로 단일 방향으로 전송될 수 있다. RAM(732) 및 ROM(734)은 임의의 적절한 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
컴퓨터 시스템(700)은 프로세서(720)에 양방향으로 결합된 고정 저장장치(740)를 포함한다. 고정 저장장치(740)는 저장장치 제어 유닛(752)을 통해 프로세서(720)에 결합될 수 있다. 고정 저장장치(740)는 추가의 데이터 저장 능력을 제공할 수 있고 임의의 적절한 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 고정 저장장치(740)는 오퍼레이팅 시스템(OS)(742), 하나 이상의 실행 프로그램(744), 하나 이상의 애플리케이션 또는 프로그램(746), 데이터(748) 등을 저장할 수 있다. 고정 저장장치(740)는 일반적으로 프라이머리 저장장치보다 느린 세컨더리 저장 매체(하드 디스크 등)이다. 적절한 경우, 고정 저장장치(740)에 의해 저장된 정보는 가상 메모리로서 메모리(730) 내로 통합될 수 있다.
프로세서(720)는 예를 들어, 각각 적절한 장치에 결합될 수 있는 그래픽 제어(774), 비디오 인터페이스(758), 입력 인터페이스(760), 출력 인터페이스(762) 및 저장 인터페이스(764) 등의 다양한 인터페이스에 결합될 수 있다. 입력 또는 출력 장치의 예는, 제한되지 않지만, 비디오 디스플레이, 트랙 볼, 마이스(mice), 키보드, 마이크로폰, 터치 감지 디스플레이, 트랜스듀서 카드 리더, 마그네틱 또는 페이퍼 테이프 리더, 태블릿, 스타일러스, 보이스 또는 핸드라이팅 인식기, 생체 측정 리더, 또는 컴퓨터 시스템을 포함한다. 네트워크 인터페이스(756)는 프로세서(720)를 다른 컴퓨터 시스템 또는 네트워크(780)에 결합할 수 있다. 네트워크 인터페이스(756)로, 프로세서(720)는 특정 실시예의 단계를 수행하는 동안 네트워크(780)로 또는 그로부터 정보를 수신 또는 전송할 수 있다. 특정 실시예는 프로세서(720) 상에서 단독으로 실행될 수 있다. 특정 실시예는 프로세서(720) 및 함께 동작하는 하나 이상의 원격 프로세서 상에서 실행될 수 있다.
네트워크 환경에서, 컴퓨터 시스템(700)이 네트워크(780)에 접속되면, 컴퓨터 시스템(700)은 네트워크(780)에 접속된 다른 장치와 통신할 수 있다. 컴퓨터 시스템(700)은 네트워크 인터페이스(756)를 통해 네트워크(780)와 통신할 수 있다. 예를 들어, 컴퓨터 시스템(700)은 네트워크 인터페이스(756)에서 하나 이상의 입력 패킷의 형태로 네트워크(780)로부터 (다른 장치로부터의 요청 또는 응답 등의) 정보를 수신할 수 있고, 메모리(730)는 후속의 프로세싱을 위해 입력 패킷을 저장할 수 있다. 컴퓨터 시스템(700)은 하나 이상의 출력 패킷의 형태로 네트워크 인터페이스(756)로부터 네트워크(780)로 (다른 장치로의 요청 또는 응답 등의) 전송 전에 메모리(730)가 저장할 수 있는 정보를 전송할 수 있다. 프로세서(720)는 특정한 필요성에 따라 메모리(730) 내의 입력 또는 출력 패킷을 액세스하여 프로세싱할 수 있다.
컴퓨터 시스템(700)은 (키패드, 키보드, 마우스, 스타일러스, 등을 포함할 수 있는) 하나 이상의 입력 장치(766), (하나 이상의 디스플레이, 하나 이상의 스피커, 하나 이상의 프린터, 등을 포함할 수 있는) 하나 이상의 출력 장치(768), 하나 이상의 저장 장치(770), 및 하나 이상의 저장 매체(752)를 가질 수 있다. 입력 장치(766)는 컴퓨터 시스템(700) 내에 있거나 밖에 있을 수 있다. 출력 장치(768)는 컴퓨터 시스템(700) 내에 있거나 밖에 있을 수 있다. 저장 장치(770)는 컴퓨터 시스템(700) 내에 있거나 밖에 있을 수 있다. 저장 매체(752)는 컴퓨터 시스템(700) 내에 있거나 밖에 있을 수 있다.
특정 실시예는 여기에 기재되거나 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행하는 소프트웨어를 구현하는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하는 하나 이상의 컴퓨터 저장 제품을 포함한다. 특정한 실시예에서, 미디어 및/또는 소프트웨어의 하나 이상의 부분은 여기에 기재되거나 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행하도록 특별히 설계되고 제조될 수 있다. 추가적으로 또는 대안으로서, 특정한 실시예에서, 미디어 및/또는 소프트웨어의 하나 이상의 부분은 일반적으로 여기에 기재되거나 도시된 프로세스에 특정된 설계 또는 제조없이 이용가능하다. 컴퓨터 판독가능 저장 매체의 예는, 제한되지 않지만, (CD-ROM 등의)CD, FPGA, 플로피 디스크, 플롭티컬 디스크, 하드 디스크, 홀로그래픽 저장 장치, (ASIC 등의) IC, 마그네틱 테이프, 캐시, PLD, RAM 장치, ROM 장치, 반도체 메모리 장치 및 다른 적절한 컴퓨터 판독가능 저장 매체를 포함한다. 특정한 실시예에서, 소프트웨어는 컴퓨터가 인터럽터를 이용하여 실행할 수 있는 하이 레벨 코드를 포함하는 하나 이상의 파일을 컴파일러가 생성할 수 있는 머신 코드일 수 있다.
일 예로서, 제한하지 않고, 메모리(730)는 소프트웨어를 구현하는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 컴퓨터 시스템(700)은 소프트웨어를 실행하는 프로세서(720)의 결과로서 여기에 기재되거나 도시된 특정 기능을 제공할 수 있다. 메모리(730)는 소프트웨어를 저장할 수 있고 프로세서(720)는 소프트웨어를 실행할 수 있다. 메모리(730)는 네트워크 인터페이스(756)를 통해 하나 이상의 다른 소스로부터 또는 소프트웨어를 구현하는 대용량 저장 장치(730) 내의 컴퓨터 판독가능 저장 매체로부터 소프트웨어를 판독할 수 있다. 소프트웨어를 실행할 때, 프로세서(720)는, 메모리(730)에 저장될 하나 이상의 데이터 구조를 정의하는 것과 특정한 필요성에 따라 소프트웨어의 하나 이상의 부분에 의해 지시된 데이터 구조의 하나 이상을 변경하는 것을 포함할 수 있는 여기에 기재되거나 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행할 수 있다. 추가적으로 또는 대안으로, 컴퓨터 시스템(700)은, 여기에 기재되거나 도시된 하나 이상의 프로세스의 하나 이상의 단계를 수행하기 위하여 소프트웨어 대신 또는 그와 함께 동작할 수 있는 회로에서 구현되거나 고정 배선으로 연결된(hardwired) 로직의 결과로서 여기에 기재되거나 도시된 특정 기능을 제공할 수 있다. 본 개시물은 특정한 필요성에 따라 하드웨어 및 소프트웨어의 임의의 적절한 조합을 고려한다.
특정한 실시예에서, 컴퓨터 시스템(700)은 하나 이상의 그래픽 프로세싱 유닛(GPU)(724)을 포함할 수 있다. 특정한 실시예에서, GPU(724)는 그래픽 렌더링에서 공통으로 이용되는 수학적 동작을 수행하는 하나 이상의 집적 회로 및/또는 프로세싱 코어를 포함할 수 있다. 임의의 실시예에서, GPU(724)는 특수 그래픽 유닛 명령 세트를 사용할 수 있지만, 다른 실시예에서, GPU는 CPU같은(예를 들어, 변형된 x86) 명령 세트를 사용할 수 있다. 그래픽 프로세싱 유닛(724)은 블리팅(blitting), 텍스쳐 맵핑, 픽셀 쉐이딩, 프레임 버퍼링 등의 다수의 그래픽 프리미티브 동작을 구현할 수 있다. 특정한 실시예에서, GPU(724)는 그래픽 가속기, GPGPU(General Purpose GPU) 또는 임의의 다른 적절한 프로세싱 유닛일 수 있다.
특정한 실시예에서, GPU(724)는 카드 슬롯을 통해 하드웨어 시스템 아키텍쳐에 부착된 그래픽 또는 디스플레이 카드에서 구현될 수 있다. 다른 구현예에서, GPU(724)는 컴퓨터 시스템 아키텍쳐의 마더보드 상에 통합될 수 있다. 적절한 그래픽 프로세싱 유닛은 Advanced Micro Devices(r)AMD R7XX 기반 GPU 장치(Radeon(r) HD 4XXX), AMD R8XX 기반 GPU 장치(Radeon(r) HD 7XXX), Intel(r) Larabee 기반 GPU 장치(아직 출시되지 않음), nVidia(r) 8 series GPU, nVidia(r) 9 series GPU, nVidia(r) 100 series GPU, nVidia(r) 200 series GPU 및 임의의 다른 DX11-가능 GPU를 포함할 수 있다.
본 개시물은 특정한 동작이 특정한 순서로 발생하는 것으로 기재 또는 도시하였으나, 본 개시물은 임의의 적절한 순서로 발생하는 임의의 적절한 동작을 고려한다. 또한, 본 개시물은 임의의 적절한 순서로 1회이상 반복되는 임의의 적절한 동작을 고려한다. 본 개시물은 순차적으로 발생하는 특정한 동작을 기재 또는 도시하였지만, 본 개시물은 적절한 곳에서 실질적으로 동시에 발생하는 임의의 적절한 동작을 고려한다. 여기에 기재되거나 도시된 동작의 임의의 적절한 동작 또는 일련의 동작은 적절한 곳에서 오퍼레이팅 시스템 또는 커널(kernel) 등의 다른 프로세스에 의해 인터럽트, 중단 또는 제어될 수 있다. 동작은 시스템 프로세싱의 전체 또는 실질적인 일부를 차지하는 독립형 루틴으로서 또는 오퍼레이팅 시스템 환경에서 동작할 수 있다.
본 개시물은 당업자가 이해하는 예시적인 실시예에 대한 모든 변형물, 대체물, 변경물, 개조물, 및 수정물을 포함한다. 마찬가지로, 적절한 곳에서, 첨부된 청구범위는 당업자가 이해하는 예시적인 실시예에 대한 모든 변형물, 대체물, 변경물, 개조물, 및 수정물을 포함한다.

Claims (20)

  1. 컴퓨터 시스템에 의해, 3D 환경의 공통 렌더 자산(render asset)들, 다른 송신 공간 위치들과는 상이한 고유 공간 위치를 복수의 참가 클라이언트의 서브셋으로 송신하는 단계 - 상기 고유 공간 위치는 상기 3D 환경의 각각의 렌더의 생성을 위한 위치를 나타냄 -;
    상기 컴퓨터 시스템에 의해, 상기 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 상기 각각의 렌더를 생성하라는 하나 이상의 명령을 상기 참가 클라이언트들의 각각으로 송신하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 참가 클라이언트들의 각각으로부터 상기 공통 렌더 자산들을 포함하는 환경의 일부에 대한 상기 각각의 렌더를 수신하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 3D 환경을 포함하는 장면을 위해 합성될 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과하는지 여부를 결정하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과할 때, 다수의 렌더들의 수행을 통해, 상기 샘플들의 요구수를 획득하는 단계;
    상기 컴퓨터 시스템에 의해, 상기 샘플들의 요구수를 획득하면 상기 각각의 렌더들로부터 복합 렌더를 생성하는 단계 - 상기 각각의 렌더들의 각각은 상기 공통 렌더 자산들을 포함하고, 상기 각각의 렌더들의 각각은 상기 송신된 공간 위치들 중 하나로부터 렌더링됨 -; 및
    상기 컴퓨터 시스템에 의해 상기 복합 렌더를 적어도 상기 참가 클라이언트들로 송신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 다수의 렌더들을 수행하는 것은, 상기 컴퓨터 시스템에 의해, 상기 참가 클라이언트들이 상기 다수의 렌더들의 적어도 하나의 서브셋을 수행하도록 야기하는 것을 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 컴퓨터 시스템에 의해, 비-참가 클라이언트들에 대한 각각의 뷰포트(viewport)들을 렌더링하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 각각의 뷰포트들을 렌더링하는 단계는, 상기 컴퓨터 시스템에 의해, 상기 3D 환경에 대한 VSDO(viewport state data object)들, 상기 각각의 렌더들로부터 생성된 복합 광 맵(composite light map) 및 상기 비-참가 클라이언트들로부터 수신된 카메라 정보에 기초하여 상기 비-참가 클라이언트들에 대한 상기 각각의 뷰포트들을 렌더링하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 각각의 뷰포트들을 렌더링하는 단계는, 상기 컴퓨터 시스템에 의해, 상기 VSDO(viewport state data object)들 중 하나의 근원과 상기 비-참가 클라이언트들의 각각에 대한 각각의 기준점의 차이에 대해, 히트(hit) 기능을 통해 보정하는 단계를 더 포함하는 방법.
  6. 제3항에 있어서,
    상기 복합 렌더를 송신하는 단계는, 상기 컴퓨터 시스템에 의해, 상기 렌더링된 뷰포트들의 프레임들을 압축하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    각각의 고유 공간 위치는 랜덤하게 생성되는 방법.
  8. 제1항에 있어서,
    상기 렌더를 생성하라는 명령들은 상기 고유 공간 위치로부터 상기 공통 렌더 자산들 상에서 경로 추적을 수행하라는 명령들을 포함하는 방법.
  9. 제1항에 있어서,
    상기 복합 렌더는 상기 공통 렌더 자산들을 포함하는 전체 3D 환경 또는 그 일부에 대한 광 맵인 방법.
  10. 제1항에 있어서,
    상기 공통 렌더 자산들은 VSDO(viewport state data object)들인 방법.
  11. 제10항에 있어서,
    상기 복합 렌더를 송신하는 단계는,
    상기 컴퓨터 시스템에 의해, 광 맵들을 포함하는 각각의 렌더들을 추가하여 상기 공통 렌더 자산들을 포함하는 환경의 복합 광 맵을 생성하는 단계; 및
    상기 컴퓨터 시스템에 의해, 상기 복합 광 맵을 포함하는 층에 의해 향상된 VSDO(viewport state data object)들을 송신하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 복합 렌더를 송신하는 단계는,
    상기 컴퓨터 시스템에 의해, 상기 클라이언트들에게 송신된 VSDO(viewport state data object)들에 대한 이전의 광 맵과 상기 복합 광 맵 간의 변화들만을 송신하는 단계를 더 포함하는 방법.
  13. 시스템으로서,
    그래픽 프로세싱 유닛;
    프로세서; 및
    상기 프로세서에 의해 실행될 프로그램 로직을 유형적으로(tangibly) 저장하는 저장 매체
    를 포함하고,
    상기 프로그램 로직은,
    공통 렌더 자산들을 복수의 클라이언트로 송신하도록 상기 프로세서에 의해 실행되는 공통 렌더 자산 송신 로직;
    상기 복수의 클라이언트의 각각으로 다른 송신된 공간 위치들과는 상이한 고유 공간 위치를 송신하도록 상기 프로세서에 의해 실행되는 공간 위치 송신 로직 - 상기 고유 공간 위치는 각각의 렌더를 생성하기 위한 위치를 나타냄 -;
    상기 복수의 클라이언트의 각각으로 상기 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 상기 각각의 렌더를 생성하라는 하나 이상의 명령을 송신하도록 상기 프로세서에 의해 실행되는 명령 송신 로직;
    상기 복수의 클라이언트의 각각으로부터 상기 각각의 렌더를 수신하도록 상기 프로세서에 의해 실행되는 수신 로직;
    3D 환경을 포함하는 장면을 위해 합성될 샘플들의 요구수가 참가 클라이언트들의 수를 초과하는지 여부를 결정하도록 상기 프로세서에 의해 실행되는 결정 로직;
    상기 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과할 때, 다수의 렌더들의 수행을 통해, 컴퓨터 시스템에 의해 상기 샘플들의 요구수를 획득하도록 상기 프로세서에 의해 실행되는 획득 로직;
    상기 샘플들의 요구수를 획득하면, 상기 각각의 렌더들로부터 복합 렌더를 생성하도록 상기 프로세서에 의해 실행되는 복합 렌더 생성 로직 - 상기 각각의 렌더들의 각각은 상기 공통 렌더 자산들을 포함하고, 상기 송신된 공간 위치들 중 하나로부터 렌더링됨 -; 및
    상기 복수의 클라이언트로 상기 복합 렌더를 송신하도록 상기 프로세서에 의해 실행되는 복합 렌더 송신 로직
    을 포함하는 시스템.
  14. 제13항에 있어서,
    상기 다수의 렌더들을 수행하는 것은, 상기 참가 클라이언트들이 상기 다수의 렌더들의 적어도 하나의 서브셋을 수행하는 것을 야기하도록 상기 프로세서에 의해 실행되는 로직을 더 포함하는 시스템.
  15. 제13항에 있어서,
    비-참가 클라이언트들에 대한 각각의 뷰포트들을 렌더링하도록 상기 프로세서에 의해 실행되는 뷰포트 렌더링 로직을 더 포함하는 시스템.
  16. 제15항에 있어서,
    상기 뷰포트 렌더링 로직은, 상기 3D 환경에 대한 VSDO(viewport state data object)들, 상기 각각의 렌더들로부터 생성된 복합 광 맵 및 상기 비-참가 클라이언트들로부터 수신된 카메라 정보에 기초하여 상기 비-참가 클라이언트들에 대한 상기 각각의 뷰포트들을 컴퓨터 시스템에 의해 렌더링하기 위한 로직을 더 포함하는 시스템.
  17. 제16항에 있어서,
    상기 각각의 뷰포트들을 렌더링하기 위한 로직은, 상기 VSDO(viewport state data object)들 중 하나의 근원과 상기 비-참가 클라이언트들의 각각에 대한 각각의 기준점의 차이에 대해, 히트 기능을 통해 보정하도록 상기 프로세서에 의해 실행되는 보정 로직을 더 포함하는 시스템.
  18. 제13항에 있어서,
    상기 복합 렌더 송신 로직은, 상기 렌더링된 뷰포트들의 프레임들을 압축하도록 상기 프로세서에 의해 실행되는 압축 로직을 더 포함하는 시스템.
  19. 명령들을 포함하는 비-일시적 프로세서 판독가능 저장 매체로서,
    상기 명령들은,
    3D 환경의 공통 렌더 자산들, 다른 송신 공간 위치들과는 상이한 고유 공간 위치를 복수의 참가 클라이언트의 서브셋으로 송신하고 - 상기 고유 공간 위치는 상기 3D 환경의 각각의 렌더를 생성하기 위한 위치를 나타냄 -,
    상기 공통 렌더 자산들 및 그것의 고유 공간 위치를 이용하여 상기 각각의 렌더를 생성하라는 하나 이상의 명령을 상기 참가 클라이언트들의 각각으로 송신하고,
    상기 참가 클라이언트들의 각각으로부터 상기 공통 렌더 자산들을 포함하는 환경의 일부에 대한 상기 각각의 렌더를 수신하고,
    상기 3D 환경을 포함하는 장면을 위해 합성될 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과하는지 여부를 결정하고,
    상기 샘플들의 요구수가 상기 참가 클라이언트들의 수를 초과할 때, 다수의 렌더들의 수행을 통해, 상기 샘플들의 요구수를 획득하고,
    상기 샘플들의 요구수를 획득하면, 상기 각각의 렌더들로부터 복합 렌더를 생성하고 - 상기 각각의 렌더들의 각각은 상기 공통 렌더 자산들을 포함하고, 상기 각각의 렌더들의 각각은 상기 송신된 공간 위치들 중 하나로부터 렌더링됨 -; 및
    상기 복합 렌더를 적어도 상기 참가 클라이언트들로 송신
    하기 위한 명령들을 포함하는 비-일시적 프로세서 판독가능 저장 매체.
  20. 제19항에 있어서,
    비-참가 클라이언트들에 대한 각각의 뷰포트들을 렌더링하고,
    상기 복합 렌더를 포함하는 뷰포트들을 상기 비-참가 클라이언트들로 송신하기 위한 명령들을 더 포함하는 비-일시적 프로세서 판독가능 저장 매체.
KR1020167005374A 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템 KR101692193B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/208,164 2011-08-11
US13/208,164 US9250966B2 (en) 2011-08-11 2011-08-11 Crowd-sourced video rendering system
PCT/US2012/050165 WO2013023069A2 (en) 2011-08-11 2012-08-09 Crowd-sourced video rendering system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006166A Division KR101600726B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167036361A Division KR101851096B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템

Publications (2)

Publication Number Publication Date
KR20160031553A KR20160031553A (ko) 2016-03-22
KR101692193B1 true KR101692193B1 (ko) 2017-01-02

Family

ID=47669235

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020167036361A KR101851096B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템
KR1020167005374A KR101692193B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템
KR1020147006166A KR101600726B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167036361A KR101851096B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147006166A KR101600726B1 (ko) 2011-08-11 2012-08-09 크라우드소싱된 비디오 렌더링 시스템

Country Status (9)

Country Link
US (3) US9250966B2 (ko)
EP (1) EP2742431A4 (ko)
JP (2) JP5763276B2 (ko)
KR (3) KR101851096B1 (ko)
CN (1) CN103874991B (ko)
AU (3) AU2012294352B8 (ko)
CA (1) CA2843479C (ko)
TW (2) TWI485644B (ko)
WO (1) WO2013023069A2 (ko)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US8961302B2 (en) 2012-07-20 2015-02-24 Microsoft Technology Licensing, Llc Game browsing
US9381432B2 (en) 2012-08-24 2016-07-05 Microsoft Technology Licensing, Llc Game migration
US9437039B2 (en) 2012-09-11 2016-09-06 Nvidia Corporation Method and system for graphics rendering employing gradient domain metropolis light transport
US9717985B2 (en) * 2012-10-02 2017-08-01 Razer (Asia-Pacific) Pte. Ltd. Fragment-based mobile device application streaming utilizing crowd-sourcing
US9264749B2 (en) * 2012-12-13 2016-02-16 Microsoft Technology Licensing, Llc Server GPU assistance for mobile GPU applications
US9526980B2 (en) 2012-12-21 2016-12-27 Microsoft Technology Licensing, Llc Client side processing of game controller input
US9717982B2 (en) 2012-12-21 2017-08-01 Microsoft Technology Licensing, Llc Client rendering of latency sensitive game features
BR112015018905B1 (pt) 2013-02-07 2022-02-22 Apple Inc Método de operação de recurso de ativação por voz, mídia de armazenamento legível por computador e dispositivo eletrônico
CA2842975C (en) * 2013-02-14 2021-10-19 TeamUp Technologies, Inc. Collaborative, multi-user system for viewing, rendering, and editing 3d assets
US9694277B2 (en) 2013-03-14 2017-07-04 Microsoft Technology Licensing, Llc Client side processing of character interactions in a remote gaming environment
US9564102B2 (en) * 2013-03-14 2017-02-07 Microsoft Technology Licensing, Llc Client side processing of player movement in a remote gaming environment
US10008034B2 (en) * 2013-05-03 2018-06-26 Nvidia Corporation System, method, and computer program product for computing indirect lighting in a cloud network
US10713838B2 (en) * 2013-05-03 2020-07-14 Nvidia Corporation Image illumination rendering system and method
CN105556574A (zh) * 2013-09-11 2016-05-04 史克威尔·艾尼克斯控股公司 渲染设备、其渲染方法、程序和记录介质
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
CN106132494A (zh) * 2013-11-11 2016-11-16 亚马逊技术有限公司 用于多个视图生成的数据集合
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US20150130814A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Data collection for multiple view generation
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US20150130815A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Multiple parallel graphics processing units
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US20150133216A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. View generation based on shared state
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US10742716B1 (en) * 2013-12-16 2020-08-11 Amazon Technologies, Inc. Distributed processing for content personalization
EP3092623A4 (en) * 2014-01-09 2017-08-30 Square Enix Holdings Co., Ltd. Online game server architecture using shared rendering
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
CN105335345B (zh) * 2014-07-03 2017-12-19 北大方正集团有限公司 彩色图像文件合成方法和装置
CN104125494B (zh) * 2014-07-07 2017-07-11 四川中电启明星信息技术有限公司 一种大屏幕分布式播放场景画面拼接方法
US9294786B2 (en) 2014-07-07 2016-03-22 International Business Machines Corporation Coordination of video and/or audio recording
CN104392481B (zh) * 2014-11-25 2017-12-05 无锡梵天信息技术股份有限公司 一种利用贴图控制高光反射清晰度的方法及装置
EP3029940B1 (en) 2014-12-04 2017-03-15 Axis AB Method and device for post processing of a video stream
US10742703B2 (en) 2015-03-20 2020-08-11 Comcast Cable Communications, Llc Data publication and distribution
US10116913B2 (en) * 2015-07-09 2018-10-30 Doubleme, Inc 3D virtual reality model sharing and monetization electronic platform system
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) * 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US20170140570A1 (en) * 2015-11-13 2017-05-18 Intel Corporation Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices
EP3185152B1 (en) * 2015-12-22 2022-02-09 Dassault Systèmes Distributed clash and snapping
US10719902B2 (en) * 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
GB201709752D0 (en) * 2017-06-19 2017-08-02 Advanced Risc Mach Ltd Graphics processing systems
US10455135B2 (en) * 2017-11-17 2019-10-22 Facebook, Inc. Enabling crowd-sourced video production
CN108364292B (zh) * 2018-03-26 2021-05-25 吉林大学 一种基于多幅视角图像的光照估计方法
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11032345B2 (en) 2018-05-10 2021-06-08 Microsoft Technology Licensing, Llc Client side data stream processing
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US10924525B2 (en) 2018-10-01 2021-02-16 Microsoft Technology Licensing, Llc Inducing higher input latency in multiplayer programs
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11270496B2 (en) * 2019-05-24 2022-03-08 Nvidia Corporation Fine grained interleaved rendering applications in path tracing
US11328471B2 (en) * 2019-05-24 2022-05-10 Nvidia Corporation Fine grained interleaved rendering applications in path tracing for cloud computing environments
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11049315B2 (en) * 2019-07-31 2021-06-29 Verizon Patent And Licensing Inc. Methods and devices for bifurcating graphics rendering between a media player device and a multi-access edge compute server
US11711571B2 (en) * 2020-03-06 2023-07-25 Advanced Micro Devices, Inc. Client-side offload of graphics effects processing
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
US11941752B2 (en) 2020-07-21 2024-03-26 Nvidia Corporation Streaming a compressed light field
WO2022026367A1 (en) * 2020-07-25 2022-02-03 Silver Spoon Animation Inc. System and method for populating a virtual crowd in real-time using augmented and virtual reality
US11501467B2 (en) 2020-11-03 2022-11-15 Nvidia Corporation Streaming a light field compressed utilizing lossless or lossy compression
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
US11875461B2 (en) 2021-01-22 2024-01-16 Dtis, Llc Visual data management system and method
WO2022168996A1 (ko) * 2021-02-02 2022-08-11 박재범 사용자의 유휴 자원을 활용한 분산 렌더링 시스템 및 분산 렌더링 방법
CN114301880B (zh) * 2021-12-23 2023-05-12 聚好看科技股份有限公司 三维数据传输方法及电子设备、信令服务器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121742A1 (en) 2002-01-03 2003-07-03 Hardy Thomas Ray Floor cable management system
US20100306813A1 (en) 2009-06-01 2010-12-02 David Perry Qualified Video Delivery

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0814853B2 (ja) * 1986-09-09 1996-02-14 富士通株式会社 並列レイトレーシングの負荷分散処理方法
JPH08123978A (ja) * 1994-10-25 1996-05-17 Toppan Printing Co Ltd 3次元画像処理システム
JP3036395B2 (ja) * 1995-04-11 2000-04-24 日本電気株式会社 プログレッシブラジオシティの並列実行方法
US6762761B2 (en) * 1999-03-31 2004-07-13 International Business Machines Corporation Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions
US20030212742A1 (en) * 2002-05-07 2003-11-13 Hochmuth Roland M. Method, node and network for compressing and transmitting composite images to a remote client
JP4122379B2 (ja) * 2002-05-24 2008-07-23 独立行政法人情報通信研究機構 ラジオシティの並列処理方法及びその装置
JP4896237B2 (ja) * 2002-09-06 2012-03-14 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置、および画像処理システム
AU2003298666A1 (en) * 2002-11-15 2004-06-15 Warner Bros. Entertainment Inc. Reality-based light environment for digital imaging in motion pictures
JP4352990B2 (ja) * 2004-05-17 2009-10-28 日本ビクター株式会社 3次元画像生成システム
US7385614B2 (en) * 2005-03-28 2008-06-10 Silicon Graphics, Inc. Compositing images using logically divided object space
US8089481B2 (en) * 2006-09-28 2012-01-03 International Business Machines Corporation Updating frame divisions based on ray tracing image processing system performance
AU2008255571A1 (en) * 2007-05-31 2008-12-04 Depth Analysis Pty Ltd Systems and methods for applying a 3D scan of a physical target object to a virtual environment
US8224087B2 (en) * 2007-07-16 2012-07-17 Michael Bronstein Method and apparatus for video digest generation
WO2009062090A1 (en) * 2007-11-08 2009-05-14 Genetic Finance Holdings Limited Distributed network for performing complex algorithms
US8466913B2 (en) * 2007-11-16 2013-06-18 Sportvision, Inc. User interface for accessing virtual viewpoint animations
US8350846B2 (en) * 2009-01-28 2013-01-08 International Business Machines Corporation Updating ray traced acceleration data structures between frames based on changing perspective
US20100289804A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
US8803892B2 (en) 2010-06-10 2014-08-12 Otoy, Inc. Allocation of GPU resources across multiple clients
TWM400644U (en) * 2010-09-30 2011-03-21 Oct Technology Co Ltd Transmission line for integrating peripheral signals into digital video interface signals

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121742A1 (en) 2002-01-03 2003-07-03 Hardy Thomas Ray Floor cable management system
US20100306813A1 (en) 2009-06-01 2010-12-02 David Perry Qualified Video Delivery

Also Published As

Publication number Publication date
AU2015200948A1 (en) 2015-03-12
KR101851096B1 (ko) 2018-04-20
US20170169601A1 (en) 2017-06-15
JP5943330B2 (ja) 2016-07-05
AU2012294352A8 (en) 2014-12-11
CN103874991B (zh) 2017-03-22
AU2015200948B2 (en) 2017-08-31
EP2742431A4 (en) 2016-03-30
AU2012294352B2 (en) 2014-11-27
TWI485644B (zh) 2015-05-21
CA2843479C (en) 2019-03-26
US20170053430A1 (en) 2017-02-23
WO2013023069A3 (en) 2013-07-11
KR101600726B1 (ko) 2016-03-07
AU2012294352B8 (en) 2014-12-11
TW201530489A (zh) 2015-08-01
JP5763276B2 (ja) 2015-08-12
JP2014524611A (ja) 2014-09-22
US20130038618A1 (en) 2013-02-14
TWI543108B (zh) 2016-07-21
KR20170002694A (ko) 2017-01-06
AU2017228573A1 (en) 2017-10-05
TW201316285A (zh) 2013-04-16
EP2742431A2 (en) 2014-06-18
AU2017228573B2 (en) 2018-09-06
NZ709336A (en) 2016-11-25
US9250966B2 (en) 2016-02-02
JP2015215908A (ja) 2015-12-03
AU2012294352A1 (en) 2014-02-06
US10275926B2 (en) 2019-04-30
US9582921B1 (en) 2017-02-28
CA2843479A1 (en) 2013-02-14
CN103874991A (zh) 2014-06-18
KR20160031553A (ko) 2016-03-22
WO2013023069A2 (en) 2013-02-14
KR20140053293A (ko) 2014-05-07
NZ620132A (en) 2015-07-31

Similar Documents

Publication Publication Date Title
KR101692193B1 (ko) 크라우드소싱된 비디오 렌더링 시스템
US10230565B2 (en) Allocation of GPU resources across multiple clients
Shi et al. A survey of interactive remote rendering systems
KR101640904B1 (ko) 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템
US8363051B2 (en) Non-real-time enhanced image snapshot in a virtual world system
JP2022553965A (ja) ビデオコンテンツを表示するための方法、コンピュータシステム、およびコンピュータプログラム
JP2023547838A (ja) 待ち時間復元クラウドレンダリング
WO2023066122A1 (zh) 一种三维模型数据的处理方法、生成方法及相关装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant