CN116802610A - 用于分发经编译的着色器的系统和方法 - Google Patents

用于分发经编译的着色器的系统和方法 Download PDF

Info

Publication number
CN116802610A
CN116802610A CN202180073085.4A CN202180073085A CN116802610A CN 116802610 A CN116802610 A CN 116802610A CN 202180073085 A CN202180073085 A CN 202180073085A CN 116802610 A CN116802610 A CN 116802610A
Authority
CN
China
Prior art keywords
compiled shader
video game
shader information
information
instance
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202180073085.4A
Other languages
English (en)
Inventor
克里斯托弗·威克沙姆·克拉克
张群书
祝晓星
欧阳鹏
雅各布·马修·冈本
普塔斯瓦米·拉胡尔·戈达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Meta Platforms Inc
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 Meta Platforms Inc filed Critical Meta Platforms Inc
Publication of CN116802610A publication Critical patent/CN116802610A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/48Starting a game, e.g. activating a game device or waiting for other players to join a multiplayer session
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/461Saving or restoring of program or task context
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/538Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5546Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/63Methods for processing data by generating or executing the game program for controlling the execution of the game in time
    • A63F2300/636Methods for processing data by generating or executing the game program for controlling the execution of the game in time involving process of starting or resuming a game
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/668Internet protocol [IP] address subnets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

所公开的计算机实现的方法可以包括:识别视频游戏,所述视频游戏被配置为可用于从云游戏环境内进行流式传输;将经编译的着色器信息保存到缓存,所述经编译的着色器信息是在云游戏环境内执行视频游戏的实例而生成的;接收在云游戏环境内加载视频游戏的新实例的请求;以及至少部分地通过重复使用来自缓存的经编译的着色器信息来加载视频游戏的新实例。还公开了各种其他方法、系统和计算机可读介质。

Description

用于分发经编译的着色器的系统和方法
相关申请的交叉引用
本申请要求于2020年10月25日提交的第63/105,320号美国临时申请的权益、以及于2021年5月28日提交的第63/194,821号美国临时申请的权益,该两个申请中的每一个的公开内容通过引用全部被结合。于2021年10月20日提交的第17/506,640号共同未决的美国申请通过引用全部被结合。
附图说明
附图示出了多个示例性实施例,并且是本说明书的一部分。这些附图与以下描述一起说明和解释本公开的各种原理。
图1是用于流式传输应用程序的示例性系统的图示。
图2是用于流式传输应用程序的系统的各方面的更详细的图示。
图3是用于分发经编译的着色器的示例方法的流程图。
图4是用于分发经编译的着色器的示例系统的示意图。
图5是用于分发经编译的着色器的另一示例系统的示意图。
图6是经编译的着色器的示例聚合的图示。
图7是用于分发经编译的着色器的示例系统的示意图。
图8是可结合本公开实施例使用的示例性增强现实眼镜(augmented-realityglasses)的图示。
图9是可结合本公开实施例使用的示例性虚拟现实头戴式设备(virtual-realityheadset)的图示。
在所有附图中,相同的附图标记和描述指代类似但不一定相同的元件。尽管本文所描述的各示例性实施例很容易作出各种修改和替代形式,但仍以示例的方式在这些附图中示出了多个特定实施例,并且即将在本文中对这些特定实施例进行详细描述。然而,本文所描述的示例性实施例不旨在被限制为所公开的特定形式。而是,本公开涵盖了落入所附权利要求书的范围内的所有修改、等同物和替代物。
具体实施方式
对着色器(例如,用于利用图形处理单元(graphics processing unit,GPU)的应用程序,例如许多视频游戏)进行编译在时间和计算资源方面可能是昂贵的,从而潜在地影响加载时间和游戏中性能这两者。通常,着色器缓存可以随时间而累积,从而减少了准备着色器的重复操作的需要。然而,在云游戏环境中,每个游戏会话可能会在完成时被清除,从而意味着着色器缓存可能会在每个会话之后丢失。本公开针对提供着色器缓存信息以供在云游戏会话中使用。当用户或测试者玩游戏时,可以收集着色器缓存信息。可以收集和聚合在各种会话上的着色器缓存信息。然后,可以对聚合后的缓存信息进行分发以供在如下这些新的游戏会话中使用:这些新的游戏会话将无法以其他方式访问先前构建的着色器缓存。
本公开总体上针对在云游戏环境内分发经编译的着色器。通过向在云游戏环境中执行的视频游戏的实例提供着色器信息,本公开的实施例可以通过提高性能、减少加载时间、和/或节省计算资源来改善云游戏领域。另外,本公开的实施例可以通过使着色器缓存的益处在这些背景下更可用,来改进虚拟化系统的功能。另外,本公开的实施例可以通过以下方式来改善在虚拟容器内执行视频游戏的实例的服务器的功能:使该服务器能够以更高的性能、以减少的加载时间和/或以更少的计算资源执行流式传输视频游戏的任务。此外,这些实施例可以通过为客户端系统提供用于新的流式传输会话的更少的平均初始化等待时间,来改进客户端系统(视频游戏被流式传输到所述客户端系统)的功能。
来自本文所描述的任何实施例的多个特征可以根据本文所描述的一般原理彼此组合使用。在结合附图和权利要求书阅读以下详细描述时,将更全面地理解这些和其他实施例、这些和其他特征、以及这些和其他优点。
下面将参考图1和图2提供用于流式传输应用程序的示例系统;将参考图3提供用于分发经编译的着色器的示例方法;将参考图4、图5和图7提供用于分发经编译的着色器的系统的示例;以及将参考图6提供聚合经编译的着色器信息的示例。此外,下面还将参考图8和图9提供根据本主题的人工现实系统的具体实施方式,该人工现实系统包括增强现实眼镜和虚拟现实头戴式设备(headset),在一些示例中,该增强现实眼镜和虚拟现实头戴式设备可以用作远程设备。
图1是用于流式传输应用程序的示例性系统100的示意图。如图1所示,系统100可以包括通过网络104与远程设备106通信的云应用程序平台102。云应用程序平台102可以包括用于托管、运行和/或执行应用程序以向远程设备106提供内容的服务器、和其他软件和硬件,该内容例如但不限于图形内容和音频内容。在某些示例中,云应用程序平台102是云托管基础设施的至少一部分和/或体现为云托管基础设施,该云托管基础设施提供用于通过互联网传递到远程设备106的内容。此外,尽管描绘了单个云应用程序平台102,但在某些示例中,云托管基础设施可以包括云应用程序平台102的多个实例。
关于网络104,可以使用任何合适的网络104。在某些示例中,网络104是互联网、局域网(LAN)、或广域网(WAN)等。此外,可以使用任何合适的远程设备106,并且该远程设备可以包括但不限于,诸如智能手机或平板电脑等移动设备、个人计算机(PC)、或人工现实系统等。远程设备106可以是客户端设备,该客户端设备通过远程设备106上的网络浏览器或其他应用程序,与云应用程序平台102交互、和/或呈现由云应用程序平台102提供的内容。此外,远程设备106可以与输入设备108通信,该输入设备用于向远程设备106提供输入。远程设备106继而可以向云应用程序平台102发送信号,以部分地基于从输入设备108接收到的输入来控制应用程序。输入设备108可以是用于提供输入的任何合适的设备,并且该输入设备可以包括但不限于,与远程设备106分开实现的设备(例如,外部鼠标、键盘、或游戏控制器等)、或者与远程设备106集成和/或包括在一起的设备(例如,集成鼠标、触摸屏、或内置传声器等)。
云应用程序平台102可以提供执行用于在互联网上传递的应用程序(例如,视频游戏)的环境。具体地,在某些示例中,云应用程序平台102可以提供在其中执行应用程序的服务器端托管环境。在某些示例中,术语“服务器端”可以指如下的资源的分类:所述资源在服务器或其他合适的平台上运行,以生成内容和/或通过网络向远程设备106传送该内容。在一些示例中,云应用程序平台102可以提供各种优化以允许增强应用程序在云托管基础设施等中的执行,该应用程序例如为未被设计为在服务器端托管环境中运行的应用程序。
在一些示例中,云应用程序平台102可以优化对在服务器端托管环境中执行的应用程序的图形处理,使得非本地的(对服务器端托管环境而言)应用程序可以在这种环境中执行,而不发生性能退化。
在某些示例中,并且如下面更详细描述的,该应用程序可以是视频游戏。此外,该视频游戏可以是设计成本地(在本地设备上、在特定操作系统上、或在特定环境中等)执行的现有视频游戏。因此,系统100可以托管针对不同平台而设计的现有游戏,并提供该现有游戏的云传递,以允许终端用户在终端用户的设备上玩游戏,而不发生性能退化且不需要对游戏进行实质性修改。
云应用程序平台102可以具有允许在服务器端托管环境中执行应用程序的任何合适的架构。图2描绘了具有图1的云应用程序平台102的、显示出示例性架构细节的系统200的一个示例。云应用程序平台102可以包括操作系统202,该操作系统与一个或多个中央处理单元(central processing unit,“CPU”)204a至204n通信,并在该一个或多个CPU上运行。操作系统202还可以与用于图像处理和图形处理的一个或多个图形处理单元(“GPU”)206a至206n通信。云应用程序平台102可以具有任何合适数量的CPU 204和GPU 206。
操作系统202可以是任何合适的操作系统。在一个示例中,操作系统202支持云应用程序平台102的基本功能,该基本功能例如为,硬件和软件管理、对资源的访问、和任务管理等。操作系统可以包括操作系统(operating system,“OS”)虚拟化层208,该OS虚拟化层用于提供操作系统虚拟化能力,该操作系统虚拟化能力允许云应用程序平台102支持多个隔离的虚拟环境。可以使用任何合适的OS虚拟化层208。在一些示例中,OS虚拟化层208是基于内核的虚拟机(Kernel-based Virtual Machine,KVM)。
操作系统202和OS虚拟化层208可以支持一个或多个虚拟容器210。云应用程序平台102可以使用任何合适的虚拟容器210。在某些示例中,虚拟容器210是为软件执行提供隔离环境的虚拟化软件单元,并且该虚拟容器将在下面进行更详细地描述。
虚拟容器210可以提供沙盒环境(sandboxed environment),以支持和执行服务器端托管环境212。类似地,服务器端托管环境212可以继而执行应用程序214。如下面将更详细描述的,服务器端托管环境212可以是用于执行应用程序214的任何合适的环境。在某些示例中,服务器端托管环境212可以是操作系统、模拟特定操作系统的模拟器、和操作系统虚拟机。
尽管图2描绘了在单个服务器端托管环境212上执行的单个应用程序214,但在其他示例中,可以在单个服务器端托管环境212上执行多个应用程序214。服务器端托管环境212、虚拟容器210、虚拟化层208、和/或操作系统202可以被配置为在不同的应用程序214之间提供安全性和隔离,使得一个应用程序214a与另一应用程序214n隔离。此外,如下面更详细描述的,在某些示例中,云应用程序平台102可以根据需要动态地创建、分配和/或提供虚拟容器210和/或服务器端托管环境212的实例。具体地,当用户初始化应用程序214时,云应用程序平台102可以分配虚拟容器210和/或服务器端托管环境212的实例,以运行该应用程序214,并且随后一旦用户完成与该应用程序214的交互,云应用程序平台就释放和/或终止该实例。一旦用户完成就释放该实例通常可能会破坏在执行该实例的过程中生成的任何缓存的着色器信息。然而,如下面将更详细解释的,在一些示例中,云应用程序平台102可以保存所缓存的着色器信息,将其与其他保存的着色器信息聚合,并将聚合后的着色器信息重新分发给该应用程序的新实例。
图3是用于分发着色器信息的示例性计算机实现的方法300的流程图。图3所示的步骤可以由任何合适的计算机可执行代码和/或计算系统来执行,该计算系统包括图1和图2所示的系统。在一个示例中,图3中所示的多个步骤中的每个步骤可以表示如下算法:该算法的结构包括多个子步骤和/或由多个子步骤表示,该算法的示例将在下面更详细地提供。
如图3所示,在步骤310处,本文所描述的多个系统中的一个或多个系统可以识别视频游戏,该视频游戏被配置为可用于从云游戏环境(例如,由图1的云应用程序平台102提供的云游戏环境)内进行流式传输。如本文所使用的,术语“流式传输”可以概括地指如下的任何过程:应用程序(例如,视频游戏)在服务器上执行,而输入从远程客户端被接收且输出(例如,图形,声音等)被实时呈现给远程客户端。
本文所描述的系统可以在任何合适的上下文中识别视频游戏。例如,本文所描述的系统可以将视频游戏识别为多个视频游戏中的一个视频游戏,该多个视频游戏由云游戏环境进行数字编目和/或用于在云游戏环境内执行。在一些实例中,本文中所描述的系统可以通过监测图形处理单元存储所缓存的着色器信息的存储位置、并确定新信息已存储在该位置处,来识别视频游戏。附加地或替代地,本文所描述的系统可以在释放和/或清理阶段期间识别视频游戏,在该释放和/或清理阶段,视频游戏的实例即将被释放或者处于正被释放的过程中。因此,本文所描述的系统可以在释放过程中、在丢失所缓存的着色器信息之前,识别由视频游戏的实例产生的所缓存的着色器信息。
返回到图3,在步骤320处,本文所描述的多个系统中的一个或多个系统可以将经编译的着色器信息保存到缓存,该经编译的着色器信息是在云游戏环境中执行视频游戏的实例而生成的。
如本文所使用的,术语“着色器”可以指用于渲染、生成、增强和/或修改应用程序的图形化效果的任何指令集和/或规则(specification)集。在一些示例中,着色器可以包括待在图形处理单元上执行的、作为相应应用程序的执行的一部分的指令。在一些示例中,可以在执行应用程序时(例如,作为应用程序的加载过程的一部分)和/或在应用程序的使用期间(例如,根据需要),对着色器进行编译。与应用程序的执行相关联的编译着色器可以使着色器能够针对特定GPU(以及例如,特定驱动器和/或GPU的驱动器版本)被适当地编译和重新编译。在一些示例中,可以关于特定图形处理单元的特定应用程序来定义着色器的集合。因此,例如,视频游戏可以使用数千个着色器,以利用图形处理单元渲染游戏中的图形。然而,并非游戏的所有部分都需要所有的着色器。因此,在一些示例中,可以在即时基础上(例如,在游戏(gameplay)期间)对着色器进行编译,从而潜在地影响游戏性能。在各种示例中,GPU可以缓存用于应用程序的经编译的着色器,使得可以对它们进行重复使用,而不是在每次执行应用程序时都需要重新编译着色器。通常,在各种示例中,如果应用程序在虚拟容器内执行,则GPU可能将经编译的着色器缓存在可能不会随着虚拟容器的销毁而保留下来的位置处。
本文所描述的系统可以以任何合适的方式将经编译的着色器信息保存到缓存。例如,这些系统可以将经编译的着色器信息保存到虚拟容器(在该虚拟容器中,视频游戏的实例被执行)外部的缓存(例如,使得经编译的着色器信息在虚拟容器被销毁后得以保留)。在一些示例中,这些系统可以识别GPU缓存经编译的着色器信息的位置,并将经编译的着色器信息从GPU缓存复制到另一位置(例如,复制到服务器(视频游戏的实例在该服务器上执行)上的永久存储库和/或复制到用于收集经编译的着色器信息的中央服务器)。
在一些示例中,本文所描述的系统可以将经编译的着色器信息与附加的经编译的着色器信息聚合。例如,这些系统可以将经编译的着色器信息与执行视频游戏的一个或多个附加实例而生成的附加的经编译的着色器信息聚合。该聚合可以以任何合适的方式来执行。例如,可以将用于视频游戏的经编译的着色器信息添加到存储库。当有新的经编译的着色器信息可用时,可以将该新的经编译的着色器信息的独特部分添加到存储库(例如,该存储库中尚不存在的特定的经编译的着色器)中。
在一些示例中,可以对来自在服务器(例如,在服务器上的虚拟容器内)上执行的视频游戏的一个实例的经编译的着色器信息进行保存,以供随后在服务器(例如,在不同的虚拟容器内)上执行的视频游戏的另一实例使用。此外,可以对来自在服务器(例如,在不同时间在不同的虚拟容器内)上执行的视频游戏的多个实例的经编译的着色器信息进行保存和聚合,以供在服务器上执行的视频游戏的未来实例使用。
附加地或替代地,在一些示例中,可以跨服务器收集、保存和聚合经编译的着色器信息。例如,视频游戏的第一实例可以在第一服务器上执行,而视频游戏的第二实例可以在第二服务器上执行。在该示例中,本文所描述的系统可以将来自第一服务器上的第一实例的经编译的着色器信息与来自第二服务器上的第二实例的经编译的着色器信息聚合。该聚合后的经编译的着色器信息可以供在第一服务器、第二服务器、和/或其他服务器上执行的视频游戏的未来实例使用。
另外,在一些示例中,可以跨用户账户从视频游戏流式传输会话中收集、保存和聚合经编译的着色器信息。例如,可以将视频游戏的第一实例分配给用于流式传输的第一用户账户,并且可以将视频游戏的第二实例分配给第二用户账户。在该示例中,本文所描述的系统可以将来自分配给第一用户账户的第一实例的经编译的着色器信息与来自分配给第二用户账户的第二实例的经编译的着色器信息聚合。该聚合后的经编译的着色器信息可以供分配给第一用户账户、第二用户账户、和/或其他用户账户的视频游戏的未来实例使用。在一些示例中,用户账户之间的大多数信息可以彼此保持分离和/或私有。然而,由于经编译的着色器信息可能不代表用户个人的信息,并且由于在一些示例中、信息的识别可能不伴随在聚合中使用的经编译的着色器信息,因此本文所描述的系统可以使用由分配给用户账户的视频游戏的实例生成的经编译的着色器信息,同时保护用户账户的隐私。
如前面所论述的,用于一应用程序的经编译的着色器信息可能对于一GPU(并且,在一些示例中,对于用于该GPU的特定驱动器版本)是特定的。因此,本文所描述的系统可以在保存经编译的着色器信息时,将针对GPU生成的经编译的着色器信息标记为或以其它方式指定为与该GPU(并且例如,特定驱动器版本)相对应。在这些示例中,执行视频游戏的各种实例而生成的经编译的着色器信息可以由多个GPU细节单独聚合。因此,以相同的GPU细节(例如,GPU模型和驱动器版本)执行的视频游戏的实例可以通过本文所描述的系统与以不同GPU细节执行的视频游戏的实例分开聚合。
在一些示例中,如上所述,本文所描述的系统可以获取来自视频游戏的实例的经编译的着色器信息,该视频游戏的实例被作为云流式传输服务的一部分执行,该云流式传输服务用于将视频游戏流式传输到由终端用户操作的客户端系统。因此,使用云流式传输服务来玩游戏可以促成经编译的着色器信息,该经编译的着色器信息用于未来通过该服务来流式传输该游戏。虽然从中获取经编译的着色器信息的视频游戏的实例可以作为该服务的常规用法的一部分来执行,但在一些示例中,该视频游戏的实例可以在云游戏环境内的视频游戏的测试过程中在云游戏环境内执行。因此,可以重复使用为使视频游戏在云游戏环境中的操作能够被测试而执行的着色器编译工作(例如,以用于测试的未来实例和/或用于实际游戏的未来实例)。测试过程可以包括人工测试过程和/或自动化测试过程。在一些示例中,自动化测试过程可以被配置为系统地测试视频游戏的多个部分,以随着时间的推移而引出对视频游戏内的目标着色器(或者,例如,所有着色器)的编译和/或使用。
返回图3,在步骤330处,本文所描述的系统可以接收在云游戏环境内加载视频游戏的新实例的请求。
本文所描述的系统可以在各种上下文中的任何上下文中接收请求。例如,客户端系统可以发送用户对视频游戏进行流式传输的请求(例如,用户可以选择待在客户端系统上播放的视频游戏)。在一些示例中,客户端系统可以将对视频游戏的选择传送到云游戏服务。例如,客户端系统可以将该选择传送到云游戏服务的服务器(例如,以上关于步骤310和320所论述的服务器、和/或被部署为使用云游戏服务的另一服务器)。在一些示例中,客户端系统可以将该选择传送给将用户请求匹配到服务器的分发管理系统。因此,在一些示例中,本文所描述的系统可以接收加载视频游戏的新实例的请求以作为分发过程的一部分。
在一些示例中,本文所描述的系统可以在一个或多个服务器上预加载视频游戏的多个实例(例如,为了在用户发出请求时更快地准备好播放)。在这些示例中,本文所描述的系统响应于确定预加载的视频游戏的实例的数量低于目标阈值,而接收加载视频游戏的新实例的请求。
在一些示例中,从用户的角度来看,在客户端系统上选择视频游戏的过程可以是无缝的;也就是说,在客户端系统上呈现给用户的界面可以显示可用于由用户启动的一个或多个视频游戏,并且用户可以选择待启动的视频游戏。从用户的角度来看,视频游戏可以快速开始向用户流式传输,部分是由于在加载视频游戏时花费在编译着色器上的时间较少。
返回图3,在步骤340处,本文所描述的多个系统中的一个或多个系统可以至少部分地通过重复使用来自缓存的经编译的着色器信息,来加载视频游戏的新实例。
如前面所论述的,由于视频游戏的新实例可以与视频游戏的其他实例(无论是在同一服务器上执行,还是在其他服务器上执行)分开——例如,通过在单独的虚拟容器中执行——因此视频游戏的该新实例可能最初无法访问任何缓存的着色器信息。然而,本文所描述的系统可以重复使用经编译的着色器信息,该经编译的着色器信息在用于执行视频游戏的实例的多个单独虚拟容器中的任何单独虚拟容器之外被复制、被保存和/或被缓存。例如,这些系统可以使经编译的着色器信息对虚拟容器是可访问的。例如,这些系统可以将经编译的着色器信息存储在虚拟容器内的逻辑位置中,在该逻辑位置处,为在虚拟容器内执行的应用程序存储了所缓存的着色器信息。
在一些示例中,如前面所论述的,经编译的着色器信息可能已经与附加的经编译的着色器信息聚合,该附加的经编译的着色器信息来自视频游戏的附加执行实例,该视频游戏的附加执行实例潜在地在不同的服务器上和/或用于不同的用户账户。在这些示例中,重复使用来自缓存的经编译的着色器信息可能需要提供聚合后的经编译的着色器信息,以供视频游戏的新实例使用(例如,以供执行用于视频游戏的新实例的着色器的GPU使用)。
此外,如前面所论述的,在一些示例中,经编译的着色器信息可能已被指定为与特定类型的GPU(例如,模型和/或驱动器版本)相对应。因此,本文所描述的系统可以识别用于视频游戏的新实例的GPU的类型,并且随后基于该GPU的类型识别所缓存的经编译的着色器信息。一经确定所缓存的经编译的着色器信息是由相同类型的GPU生成的,本文所描述的系统就可以为该视频游戏的新实例重新使用所缓存的经编译的着色器信息。
图4示出了用于分发着色器信息的系统400。如图4所示,系统400可以包括服务器420和422、以及着色器信息分发系统490。在一些示例中,服务器420和422可以作为视频游戏云流式传输服务的一部分来运行。此外,在一些示例中,服务器420和422可以是图2中的云应用程序平台202的表示和/或一部分。服务器420可以托管虚拟容器430,该虚拟容器包括服务器端托管环境450和游戏实例440。服务器420可以将游戏实例440流式传输到客户端480。执行游戏实例440可以生成经编译的着色器460,以供图形处理单元470在执行游戏实例440时使用。
一旦客户端480终止流式传输会话,虚拟容器430就可以被释放(并且例如,虚拟容器430存储的数据可以被丢弃)。然而,在虚拟容器430被释放且经编译的着色器460丢失之前,着色器信息分发系统490可以从经编译的着色器460收集着色器信息462。在一个示例中,着色器信息462可以是经编译的着色器460,和/或该着色器信息还可以包括描述经编译的着色器460的信息。
稍后,服务器422可以托管虚拟容器432,该虚拟容器包括服务器端托管环境452和游戏实例442。服务器422可以被配置为将游戏实例442流式传输到客户端482。执行游戏实例442通常可以编译着色器,以供图形处理单元472在执行游戏实例442时使用。然而,编译着色器可能会耗费大量时间和资源。因此,编译着色器可能减缓加载时间,降低游戏期间的性能,和/或阻止服务器422执行其他任务(例如,托管具有附加游戏实例的附加虚拟容器)。因此,着色器信息分发系统490可以将着色器信息462注入到虚拟容器432中,使得游戏实例442和/或图形处理单元472找到准备好用于图形处理单元472的着色器信息462,从而防止着色器的多余编译。
图5示出了用于聚合和分发着色器信息的示例系统500。如图5所示,系统500可以包括服务器520、522和524、以及着色器信息分发系统550。服务器520可以在不同的时间托管用于流式传输到客户端510a至510n中的一个或多个客户端的游戏实例532和游戏实例534。服务器522可以在不同的时间托管用于流式传输到客户端510a至510n中的一个或多个客户端的游戏实例536和游戏实例538。服务器524可以在某个时间托管用于流式传输到客户端510a至510n中的一个客户端的游戏实例540。当游戏实例532、534、536、538和540执行时,可以分别生成经编译的着色器562、564、566、568和570。着色器信息分发系统550可以将经编译的着色器562、564、566、568和570聚合成聚合后的着色器信息580。着色器信息分发系统550可以向一个或多个服务器(例如包括服务器524)提供聚合后的着色器信息580。当客户端512请求播放视频游戏并且服务器524启动待流式传输到客户端512的游戏实例542时,服务器524可以针对游戏实例542使用聚合后的着色器信息580,使得经编译的着色器562、564、566、568和570不需要为执行游戏实例542而重新编译。
图6示出了聚合经编译的着色器信息的示例。如图6所示,一组经编译的着色器610可以包括经编译的着色器612、614、616和618。多个经编译的着色器610可能已经在执行基于云的游戏流式传输服务的视频游戏的实例的过程中被编译。一旦游戏流式传输会话结束,就可以将多个经编译的着色器610添加到视频游戏的聚合后的经编译的着色器存储库620,而不是丢弃该经编译的着色器。聚合后的经编译的着色器存储库620可能已经具有经编译的着色器612、614、622、624和626。然而,经编译的着色器616和618对于存储库620来说可能是新的。因此,本文所描述的系统可以将来自多个经编译的着色器610的经编译的着色器616和618添加到存储库620。
本文所描述的系统可以稍后使用聚合后的经编译的着色器存储库620来提供已经编译的着色器,以供基于云的游戏流式传输服务执行的视频游戏的实例使用。另外,在一些示例中,将来可以添加聚合后的经编译的着色器存储库620中仍然缺失的用于视频游戏的附加的经编译的着色器,使得聚合后的经编译的着色器存储库通过重复使用基于云的游戏流式传输服务继续改进,从而使聚合后的经编译的着色器存储库随着时间变得更加完整。
图7示出了用于聚合和分发着色器信息的示例系统700。如图7所示,系统700包括服务器720、722和724、以及着色器信息分发系统750。服务器720可以在不同的时间托管游戏实例732和734,从而使得针对GPU 710的经编译的着色器762和764在服务器720上生成并由着色器信息分发系统750收集。服务器722可以在不同的时间托管游戏实例736和738,从而使得针对GPU 712的经编译的着色器766和768在服务器722上生成并由着色器信息分发系统750收集。服务器724可以在某个时间托管游戏实例740,从而使得在服务器724上生成经编译的着色器770,并由着色器信息分发系统750收集该经编译的着色器。GPU 712和714可以具有相同的类型;因此,着色器信息分发系统750可以将它们聚合为聚合后的着色器信息780的一部分,该聚合后的着色器信息表示针对GPU 712和714的GPU类型的着色器信息。GPU 710可以具有与GPU 712和714不同的类型;因此,着色器信息分发系统750可能未将经编译的着色器762和764包括在聚合后的着色器信息780中(而是,例如,在未示出的单独的聚合中)。
着色器信息分发系统750可以向服务器724提供聚合后的着色器信息780。游戏实例742可以由服务器724托管。因为游戏实例742使用GPU 714,所以本文所描述的系统可以使用聚合后的着色器信息780来运行游戏实例742,而不是使用经编译的着色器766、768和770来运行该游戏实例。
如上所述,云游戏可能呈现出如下挑战:其中每个游戏会话在结束时被清理,使得来自先前游戏的着色器缓存丢失。准备着色器缓存可能是一项处理繁重的任务,并且可能影响游戏的加载时间和/或游戏的每秒帧稳定性。因此,本文所描述的系统提供了云游戏环境中的自动着色器收集、聚合和分发。
示例实施例
示例1:一种用于分发着色器信息的计算机实现的方法可以包括:识别视频游戏,该视频游戏被配置为可用于从云游戏环境内进行流式传输;将经编译的着色器信息保存到缓存,该经编译的着色器信息是在云游戏环境内执行视频游戏的实例而生成的;接收在云游戏环境内加载视频游戏的新实例的请求;以及至少部分地通过重复使用来自缓存的经编译的着色器信息,来加载视频游戏的新实例。
示例2:根据示例1所述的计算机实现的方法,还包括:将经编译的着色器信息与附加的经编译的着色器信息聚合,得到聚合后的经编译的着色器信息,该附加的经编译的着色器信息是执行视频游戏的至少一个附加实例而生成的;并且其中,重复使用来自缓存的经编译的着色器信息包括使用聚合后的经编译的着色器信息。
示例3:根据示例1和2中任一示例所述的计算机实现的方法,其中,将经编译的着色器信息与附加的经编译的着色器信息聚合包括:将来自经编译的着色器信息的至少一个独特部分的信息添加到存储库,该存储库包括附加的经编译的着色器信息。
示例4:根据示例1至3中任一示例所述的计算机实现的方法,其中,视频游戏的实例在第一服务器上执行;视频游戏的附加实例在第二服务器上执行;并且将经编译的着色器信息与附加的经编译的着色器信息聚合包括:分别从第一服务器和第二服务器收集经编译的着色器信息和附加的经编译的着色器信息。
示例5:根据示例1至4中任一示例所述的计算机实现的方法,其中,视频游戏的实例被分配给第一用户账户;视频游戏的附加实例被分配给第二用户账户;并且将经编译的着色器信息与附加的经编译的着色器信息聚合包括:分别从第一用户账户和第二用户账户的游戏的生成中收集经编译的着色器信息和附加的经编译的着色器信息。
示例6:根据示例1至5中任一示例所述的计算机实现的方法,其中,视频游戏的实例在云游戏环境内的视频游戏的测试过程中在云游戏环境内执行。
示例7:根据示例1至6中任一示例所述的计算机实现的方法,其中,重复使用来自缓存的经编译的着色器信息包括:将经编译的着色器信息复制到一位置,执行视频游戏的新实例的计算系统被配置为在所述位置处存储和检索视频游戏的经编译的着色器信息。
示例8:根据示例1至7中任一示例所述的计算机实现的方法,其中,重复使用来自缓存的经编译的着色器信息包括:识别已被提供用于运行视频游戏的新实例的虚拟容器;以及使经编译的着色器信息能够被该虚拟容器访问。
示例9:根据示例1至8中任一示例所述的计算机实现的方法,其中:将经编译的着色器信息保存到缓存包括:将所保存的经编译的着色器信息指定为与用于执行视频游戏的实例的图形处理单元的类型相对应。
示例10:根据示例1至9中任一示例所述的计算机实现的方法,其中,重复使用来自缓存的经编译的着色器信息是至少部分地响应于确定:视频游戏的新实例被配置为使用附加的图形处理单元,该附加的图形处理单元与用于执行视频游戏的实例的图形处理单元具有相同的类型。
本公开的实施例可以包括各种类型的人工现实系统来实现,或结合各种类型的人工现实系统来实现。人工现实是在呈现给用户之前已经以某种方式进行了调整的现实形式,该现实形式例如可以包括,虚拟现实(virtual reality)、增强现实(augmentedreality)、混合现实(mixed reality)、混合现实(hybrid reality)、或它们的某种组合和/或衍生物。人工现实内容可以包括完全的计算机生成内容或与采集的(例如,真实世界)内容相结合的计算机生成内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,以上中的任何一种都可以在单个通道或多个通道(例如,给观看者带来三维(three-dimensional,3D)效果的立体视频)中呈现。此外,在一些实施例中,人工现实还可以与应用、产品、附件、服务、或它们的某种组合相关联,这些应用、产品、附件、服务或它们的某种组合例如用于在人工现实中创建内容,和/或以其他方式用于人工现实中(例如,在人工现实中执行活动)。
人工现实系统可以以各种不同的形状要素和配置来实现。一些人工现实系统可以被设计为在没有近眼显示器(near-eye display,NED)的情况下工作。其他人工现实系统可以包括NED,该NED还提供对真实世界可见性(诸如,例如,图8中的增强现实系统800),或使用户在视觉上沉浸于人工现实中(诸如,例如,图9中的虚拟现实系统900)。尽管一些人工现实设备可以是独立的系统,但其它人工现实设备可以与外部设备通信和/或配合以向用户提供人工现实体验。这种外部设备的实施例包括手持控制器、移动设备、台式计算机、由用户穿戴的设备、由一个或多个其它用户穿戴的设备、和/或任何其它合适的外部系统。
转到图8,增强现实系统800可以包括具有框架810的眼镜设备802,该框架配置为将左显示设备815(A)和右显示设备815(B)保持在用户双眼的前方。显示设备815(A)和815(B)可以一起或独立地动作,以向用户呈现图像或系列图像。尽管增强现实系统800包括两个显示器,但是本公开的实施例可以在具有单个NED或多于两个NED的增强现实系统中实现。
在一些实施例中,增强现实系统800可以包括一个或多个传感器,例如传感器840。传感器840可以响应于增强现实系统800的运动而生成测量信号,并且可以大体上位于框架810的任何部分上。传感器840可以表示各种不同的传感机构中的一种或多种,例如,位置传感器、惯性测量单元(inertial measurement unit,IMU)、深度摄像头组件、结构化光发射器和/或检测器、或它们的任意组合。在一些实施例中,增强现实系统800可以包括或可以不包括传感器840,或者可以包括多于一个传感器。在传感器840包括IMU的实施例中,IMU可以基于来自传感器840的测量信号,生成校准数据。传感器840的示例可以包括但不限于,加速度计、陀螺仪、磁力计、检测运动的其它合适类型的传感器、用于IMU的误差校正的传感器、或它们的某种组合。
在一些示例中,增强现实系统800还可以包括传声器阵列,该传声器阵列具有多个声学转换器820(A)至820(J),该多个声学转换器被统称为声学转换器820。声学转换器820可以表示检测由声波引起的气压变化的转换器。每个声学转换器820可以被配置为检测声音并将所检测到的声音转换成电子格式(例如,模拟格式或数字格式)。图8中的传声器阵列例如可以包括十个声学转换器:可被设计成放置在用户的相应耳朵内的820(A)和820(B),可被定位在框架810上的各个位置处的声学转换器820(C)、820(D)、822(E)、823(F)、824(G)和825(H),和/或可被定位在对应的颈带805上的声学转换器820(I)和820(J)。
在一些实施例中,声学转换器820(A)至820(F)中的一个或多个声学转换器可以用作输出转换器(例如,扬声器)。例如,声学转换器820(A)和/或820(B)可以是耳塞、或任何其它合适类型的耳机或扬声器。
传声器阵列中的各声学转换器820的配置可以改变。虽然增强现实系统800在图8中被示出为具有十个声学转换器820,但是声学转换器820的数量可以多于或少于十个。在一些实施例中,使用更多数量的声学转换器820可以增加所收集到的音频信息的量和/或提高音频信息的灵敏度和准确性。相比之下,使用更少数量的声学转换器820可以降低相关联的控制器850处理所收集到的音频信息所需的计算能力。另外,传声器阵列中的各声学转换器820的位置可以改变。例如,声学转换器820的位置可以包括用户身上的限定位置、框架810上的限定坐标、与每个声学转换器820相关联的方位、或它们的某种组合。
声学转换器820(A)和820(B)可以被定位在用户耳朵的不同部位上,例如耳廓(pinna)后面、耳屏后面、和/或耳廓(auricle)或耳窝内。或者,除了耳道内的声学转换器820之外,在耳朵上或耳朵周围还可以存在附加的声学转换器820。将声学转换器820定位在用户的耳道附近可以使传声器阵列能够收集关于声音如何到达耳道的信息。通过将多个声学转换器820中的至少两个声学转换器定位在用户头部的两侧(例如,作为双耳传声器),增强现实设备800可以模拟双耳听觉并采集用户头部周围的3D立体声场。在一些实施例中,声学转换器820(A)和820(B)可以通过有线连接830而连接到增强现实系统800,而在其它实施例中,声学转换器820(A)和820(B)可以通过无线连接(例如,蓝牙连接)而连接到增强现实系统800。在另一些实施例中,声学转换器820(A)和820(B)可以完全不与增强现实系统800结合使用。
框架810上的多个声学转换器820可以以各种不同的方式而被定位,这些不同的方式包括沿着眼镜腿(temple)的长度、跨过鼻梁架、在显示设备815(A)和显示设备815(B)的上方或下方、或它们的某种组合。该多个声学转换器820还可以被定向为使得传声器阵列能够检测正佩戴着增强现实系统800的用户周围的宽方向范围内的声音。在一些实施例中,可以在增强现实系统800的制造期间执行优化过程,以确定各个声学转换器820在传声器阵列中的相对定位。
在一些示例中,增强现实系统800可以包括或连接到外部设备(例如,配对设备),例如,颈带805。颈带805概括地表示任何类型或形式的配对设备。因此,下面对颈带805的论述还可以应用于各种其它的配对设备,例如充电盒、智能手表、智能手机、腕带、其它可穿戴设备、手持控制器、平板计算机、便携计算机、其它外部计算设备等。
如图所示,颈带805可以通过一个或多个连接器而耦接到眼镜设备802。这些连接器可以是有线的或无线的,并且可以包括电子部件和/或非电子部件(例如,结构部件)。在一些情况下,眼镜设备802和颈带805可以在它们之间没有任何有线或无线连接的情况下独立地运行。尽管图8示出了眼镜设备802和颈带805中的多个部件位于眼镜设备802和颈带805上的示例性位置处,但这些部件可以位于眼镜设备802和颈带805上的其它位置、和/或以不同方式分布在该眼镜设备和/或颈带上。在一些实施例中,眼镜设备802和颈带805中的多个部件可以位于一个或多个附加的外围设备上,该一个或多个附加的外围设备与眼镜设备802、颈带805、或它们的某种组合配对。
将外部设备(例如,颈带805)与增强现实眼镜设备配对可以使该眼镜设备能够实现一副眼镜的形状要素,同时仍然可以为扩展后的能力提供足够的电池电量和计算能力。增强现实系统800的电池电量、计算资源和/或附加特征中的一些或全部可以由配对设备来提供,或者在配对设备与眼镜设备之间共享,从而总体上降低眼镜设备的重量、热量分布和形状要素,同时仍然保持所期望的功能。例如,颈带805可以允许即将以其它方式被包括在眼镜设备上的多个部件包括在颈带805中,因为与用户在其头部上承受的相比,他们可以在其肩部上承受更重的重量负荷。颈带805还可以具有较大的表面积,以通过该较大的表面积将热量扩散和散发到周围环境。因此,与在独立眼镜设备上以其他方式可行的电池电量和计算能力相比,颈带805可以允许更大的电池电量和更强的计算能力。由于颈带805中携带的重量可以比眼镜设备802中携带的重量对用户的侵害小,因此,与用户忍受佩戴重的独立眼镜设备相比,用户可以忍受更长时间佩戴较轻的眼镜设备并携带或佩戴配对设备,从而使用户能够将人工现实环境更充分地融入其日常活动中。
颈带805可以与眼镜设备802通信耦接,和/或通信耦接到其它设备。这些其它设备可以向增强现实系统800提供某些功能(例如,追踪、定位、深度图构建(depth mapping)、处理、存储等)。在图8的实施例中,颈带805可以包括两个声学转换器(例如,820(I)和820(J)),该两个声学转换器是传声器阵列的一部分(或者潜在地形成它们自己的传声器子阵列)。颈带805还可以包括控制器825和电源835。
颈带805中的声学转换器820(I)和820(J)可以被配置为检测声音并将检测到的声音转换为电子格式(模拟或数字)。在图8的实施例中,声学转换器820(I)和820(J)可以被定位在颈带805上,从而增加颈带的声学转换器820(I)和820(J)与被定位在眼镜设备802上的其它声学转换器820之间的距离。在一些情况下,增加传声器阵列中的多个声学转换器820之间的距离可以提高通过传声器阵列执行的波束成形的准确性。例如,如果声学转换器820(C)和820(D)检测到声音,且声学转换器820(C)与声学转换器820(D)之间的距离例如大于声学转换器820(D)与声学转换器820(E)之间的距离,则所确定的检测到的声音的源位置可以比当该声音被声学转换器820(D)和声学转换器820(E)检测到时更准确。
颈带805中的控制器825可以对由颈带805上的多个传感器和/或增强现实系统800生成的信息进行处理。例如,控制器825可以对来自传声器阵列的、描述了该传声器阵列检测到的声音的信息进行处理。对于每个检测到的声音,控制器825可以执行波达方向(direction-of-arrival,DOA)估算,以估计检测到的声音从哪个方向到达传声器阵列。当传声器阵列检测到声音时,控制器825可以使用该信息填充音频数据集。在增强现实系统800包括惯性测量单元的实施例中,控制器825可以计算来自位于眼镜设备802上的IMU的所有惯性计算和空间计算。连接器可以在增强现实系统800与颈带805之间、以及在增强现实系统800与控制器825之间传送信息。该信息可以是光学数据形式、电子数据形式、无线数据形式、或任何其它可传输的数据形式。将对由增强现实系统800所生成的信息的处理移至颈带805可以减少眼镜设备802的重量和热量,使得该眼睛设备对用户而言更舒适。
颈带805中的电源835可以向眼镜设备802和/或颈带805供电。电源835可以包括但不限于,锂离子电池、锂-聚合物电池、一次性锂电池、碱性电池、或任何其它形式的电力存储器。在一些情况下,电源835可以是有线电源。将电源835包括在颈带805上而不是眼镜设备802上可以有助于更好地分布由电源1535产生的重量和热量。
如所提到的,一些人工现实系统可以使用虚拟体验来大体上代替用户对真实世界的多种感官知觉中的一种或多种感官知觉,而不是将人工现实与真实现实混合。这种类型的系统的一个示例是大部分或完全覆盖用户视场的头戴式显示系统,例如图9中的虚拟现实系统900。虚拟现实系统900可以包括前部刚性体902和被成形为适合围绕用户头部的带904。虚拟现实系统900还可以包括输出音频转换器906(A)和906(B)。此外,尽管在图9中未示出,但是前部刚性体902可以包括一个或多个电子元件,该一个或多个电子元件包括一个或多个电子显示器、一个或多个惯性测量单元(IMU)、一个或多个追踪发射器或检测器、和/或用于创建人工现实体验的任何其它合适的设备或系统。
人工现实系统可以包括各种类型的视觉反馈机构。例如,增强现实系统800和/或虚拟现实系统900中的显示设备可以包括一个或多个液晶显示器(liquid crystaldisplay,LCD)、一个或多个发光二极管(light emitting diode,LED)显示器、一个或多个微型LED显示器、一个或多个有机LED(organic LED,OLED)显示器、一个或多个数字光投影(digital light project,DLP)微型显示器、一个或多个硅基液晶(liquid crystal onsilicon,LCoS)微型显示器、和/或任何其它合适类型的显示屏。这些人工现实系统可以包括用于双眼的单个显示屏,或者可以为每只眼睛提供一个显示屏,这可以为变焦调整或为校正用户的屈光不正而提供额外的灵活性。这些人工现实系统中的一些人工现实系统还可以包括多个光学子系统,这些光学子系统具有一个或多个透镜(例如,常规的凹透镜或凸透镜、菲涅耳透镜、可调节的液体透镜等),用户可以透过该一个或多个透镜观看显示屏。这些光学子系统可以用于各种目的,这些目的包括准直(例如,使对象显现在比其物理距离更远的距离处)、放大(例如,使对象看起来比其实际尺寸更大)、和/或传递光(例如,传递到观看者的眼睛)。这些光学子系统可以用于直视型结构(non-pupil-forming architecture)(例如,直接对光进行准直但会产生所谓的枕形失真的单透镜配置)和/或非直视型结构(pupil-forming architecture)(例如,产生所谓的桶形失真以消除枕形失真的多透镜配置)。
除了使用显示屏之外,或者代替使用显示屏,本文所描述的多个人工现实系统中的一些人工现实系统可以包括一个或多个投影系统。例如,增强现实系统800和/或虚拟现实系统900中的显示设备可以包括微型LED投影仪,所述微型LED投影仪将光投射(例如,使用波导投射)到显示设备中,该显示设备例如为允许环境光通过的透明组合透镜。显示设备可以折射将投射的光朝向用户的瞳孔,并且可以使用户能够同时观看人工现实内容和真实世界这两者。显示设备可以使用各种不同的光学部件中的任何光学部件来实现该目的,这些光学部件包括波导部件(例如,全息元件、平面元件、衍射元件、偏振元件、和/或反射波导元件)、光操纵表面和元件(例如,衍射元件和光栅、反射元件和光栅、以及折射元件和光栅)、耦合元件等。人工现实系统还可以配置有任何其它合适类型或形式的图像投影系统,例如用于虚拟视网膜显示器的视网膜投影仪。
本文所描述的人工现实系统还可以包括各种类型的计算机视觉部件和子系统。例如,增强现实系统800和/或虚拟现实系统900可以包括一个或多个光学传感器,该一个或多个光学传感器例如为二维(two-dimensional,2D)摄像头或3D摄像头、结构化光发射器和检测器、飞行时间深度传感器、单波束测距仪或扫描激光测距仪、3D激光雷达(LiDAR)传感器、和/或任何其它合适类型或形式的光学传感器。人工现实系统可以对来自这些传感器中的一个或多个传感器中的数据进行处理,以识别用户的位置、绘制真实世界的地图、向用户提供与真实世界环境有关的背景、和/或执行各种其它功能。
本文所描述的人工现实系统还可以包括一个或多个输入和/或输出音频转换器。输出音频转换器可以包括音圈扬声器、带式扬声器、静电式扬声器、压电式扬声器、骨传导转换器、软骨传导转换器、耳屏振动转换器、和/或任何其它合适类型或形式的音频转换器。类似地,输入音频转换器可以包括电容式传声器、动态传声器、带式传声器、和/或任何其它类型或形式的输入转换器。在一些实施例中,对于音频输入和音频输出这两者,可以使用单个转换器。
在一些实施例中,本文所描述的人工现实系统还可以包括触觉(tactile)(即,触觉(haptic))反馈系统,该触觉反馈系统可以结合到头饰、手套、服装、手持控制器、环境设备(例如,椅子、地板垫等)、和/或任何其它类型的设备或系统中。触觉反馈系统可以提供各种类型的皮肤反馈,这些类型的皮肤反馈包括振动、推力、牵拉、质地和/或温度。触觉反馈系统还可以提供各种类型的动觉反馈,例如运动和顺应性。可以使用电机、压电式致动器、流体系统、和/或各种其它类型的反馈机构来实现触觉反馈。触觉反馈系统可以独立于其它人工现实设备而实现,在其它人工现实设备内实现,和/或结合其它人工现实设备来实现。
通过提供触觉感知、听觉内容和/或视觉内容,人工现实系统可以在各种背景和环境中创建完整的虚拟体验或增强用户的真实世界体验。例如,人工现实系统可以辅助或扩展用户在特定环境内的感知、记忆或认知。一些系统可以增强用户与真实世界中的其他人的交互,或者可以实现与虚拟世界中的其他人的更沉浸式的交互。人工现实系统还可以用于教育目的(例如,用于学校、医院、政府机构、军事机构、企业等中的教学或训练)、娱乐目的(例如,用于玩视频游戏、听音乐、观看视频内容等)、和/或用于可接入性目的(例如,作为助听器、视觉辅助等)。本文所公开的实施例可以在这些背景和环境中的一个或多个背景和环境中、和/或在其它背景和环境中实现或增强用户的人工现实体验。
如以上所详述的,本文所描述和/或所示出的计算设备和系统概括地表示能够执行计算机可读指令(例如,包含在本文中所描述的多个模块内的那些计算机可读指令)的任何类型或形式的计算设备或系统。在其最基本的配置中,一个或多个这些计算设备可以各自包括至少一个存储设备和至少一个物理处理器。
在一些示例中,术语“存储设备”概括地指能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储设备可以存储、加载和/或维护本文所描述的多个模块中的一个或多个模块。存储设备的示例包括但不限于,随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、闪存、硬盘驱动器(Hard Disk Drive,HDD)、固态驱动器(Solid-State Drive,SSD)、光盘驱动器、高速缓冲存储器、以上中的一者或多者的变型或组合、或任何其他合适的存储器。
在一些示例中,术语“物理处理器”概括地指能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器可以访问和/或修改存储在上述存储器设备中的一个或多个模块。物理处理器的示例包括但不限于,微处理器、微控制器、中央处理单元(CPU)、实现软核处理器的现场可编程门阵列(Field-Programmable Gate Array,FPGA)、专用集成电路(Application-Specific IntegratedCircuit,ASIC)、以上中的一者或多者中的部分、以上中的一者或多者的变型或组合、或任何其他合适的物理处理器。
尽管本文所描述和/或所示出的多个模块被示为单独的元件,但是这些模块可以表示单个模块或应用程序中的部分。另外,在某些实施例中,这些模块中的一个或多个模块可以表示一个或多个软件应用程序或程序,该一个或多个软件应用程序或程序被计算设备执行时,可以使计算设备执行一个或多个任务。例如,本文所描述和/或所示出的多个模块中的一个或多个模块可以表示如下这些模块:所述模块存储在本文所描述和/或所示出的多个计算设备或系统中的一个或多个计算设备上,且被配置为在本文描述和/或示出的多个计算设备或系统中的一个或多个计算设备或系统上运行。这些模块中的一个或多个模块还可以表示被配置为执行一个或多个任务的一个或多个专用计算机中的全部或部分。
另外,本文所描述的多个模块中的一个或多个模块可以将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。附加地或替代地,本文所陈述的多个模块中的一个或多个模块可以通过在计算设备上执行、在计算设备上存储数据、和/或以其他方式与计算设备交互,来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式转换为另一种形式。
在一些实施例中,术语“计算机可读介质”概括地指能够存储或承载计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于,传输型介质和非暂态型介质,该传输型介质例如为载波,该非暂态型介质例如为,磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘))、光存储介质(例如,光盘(Compact Disk,CD)、数字视频盘(Digital Video Disk,DVD)和蓝光光盘(BLU-RAY disk))、电子存储介质(例如,固态驱动器和闪存介质)、以及其他分发系统。
本文所描述和/或所示出的过程参数和步骤的顺序仅作为示例给出,并且可以根据需要改变。例如,尽管本文所示出和/或所描述的步骤可以以特定顺序示出或论述,但是这些步骤不一定需要按照所示出或所讨论的顺序执行。本文所描述和/或所示出的各种示例性方法还可以省略本文所描述或所示出的多个步骤中的一个或多个步骤,或者包括除了所公开的那些步骤之外的附加步骤。
已经提供前面的描述以使本领域的技术人员能够最优地利用本文所公开的示例性实施例的各个方面。该示例性描述不旨在是详尽的或被限制为所公开的任何精确形式。在不脱离本公开的精神和范围的情况下,许多修改和变型是可能的。本文所公开的实施例在所有方面都应被认为是说明性的而不是限制性的。在确定本公开的范围时,应当参考所附的任何权利要求及其等同物。
除非另有说明,否则如在说明书和权利要求书中使用的术语“连接到”和“耦接到”(及它们的派生词)将被解释为允许直接连接和间接连接(即,通过其它元件或部件)。另外,如本说明书和权利要求书中使用的术语“一(a)”或“一(an)”将被解释为表示“中的至少一个”。最后,为了便于使用,如本说明书和/或权利要求书中所使用的术语“包括(including)”和“具有”(以及它们的派生词)与词语“包括(comprising)”是可互换的,并且具有与词语“包括(comprising)”相同的含义。

Claims (20)

1.一种计算机实现的方法,包括:
识别视频游戏,所述视频游戏被配置为能够用于从云游戏环境内进行流式传输;
将经编译的着色器信息保存到缓存,所述经编译的着色器信息是在所述云游戏环境内执行所述视频游戏的实例而生成的;
接收在所述云游戏环境内加载所述视频游戏的新实例的请求;以及
至少部分地通过重复使用来自所述缓存的所述经编译的着色器信息,来加载所述视频游戏的所述新实例。
2.根据权利要求1所述的计算机实现的方法,
还包括:将所述经编译的着色器信息与附加的经编译的着色器信息进行聚合,得到聚合后的经编译的着色器信息,所述附加的经编译的着色器信息是执行所述视频游戏的至少一个附加实例而生成的;
其中,重复使用来自所述缓存的所述经编译的着色器信息包括:使用所述聚合后的经编译的着色器信息。
3.根据权利要求2所述的计算机实现的方法,其中,将所述经编译的着色器信息与所述附加的经编译的着色器信息进行聚合包括:将来自所述经编译的着色器信息的至少一个独特部分的信息添加到存储库,所述存储库包括所述附加的经编译的着色器信息。
4.根据权利要求2所述的计算机实现的方法,其中:
所述视频游戏的所述实例在第一服务器上执行;
所述视频游戏的所述附加实例在第二服务器上执行;并且
将所述经编译的着色器信息与所述附加的经编译的着色器信息聚合包括:分别从所述第一服务器和所述第二服务器收集所述经编译的着色器信息和所述附加的经编译的着色器信息。
5.根据权利要求2所述的计算机实现的方法,其中:
所述视频游戏的所述实例被分配给第一用户账户;
所述视频游戏的所述附加实例被分配给第二用户账户;并且
将所述经编译的着色器信息与所述附加的经编译的着色器信息进行聚合包括:分别从所述第一用户账户和所述第二用户账户的游戏的生成中收集所述经编译的着色器信息和所述附加的经编译的着色器信息。
6.根据权利要求1所述的计算机实现的方法,其中,所述视频游戏的所述实例在所述云游戏环境内的所述视频游戏的测试过程中在所述云游戏环境内执行。
7.根据权利要求1所述的计算机实现的方法,其中,重复使用来自所述缓存的所述经编译的着色器信息包括:将所述经编译的着色器信息复制到一位置,执行所述视频游戏的所述新实例的计算系统被配置为在所述位置处存储和检索所述视频游戏的经编译的着色器信息。
8.根据权利要求1所述的计算机实现的方法,其中,重复使用来自所述缓存的所述经编译的着色器信息包括:
识别已被提供用于运行所述视频游戏的所述新实例的虚拟容器;以及
使所述经编译的着色器信息能够被所述虚拟容器访问。
9.根据权利要求1所述的计算机实现的方法,其中,将所述经编译的着色器信息保存到所述缓存包括:将所保存的所述经编译的着色器信息指定为与用于执行所述视频游戏的所述实例的图形处理单元的类型相对应。
10.根据权利要求9所述的计算机实现的方法,其中,重复使用来自所述缓存的所述经编译的着色器信息是至少部分地响应于确定:所述视频游戏的所述新实例被配置为使用附加图形处理单元,所述附加图形处理单元与用于执行所述视频游戏的所述实例的图形处理单元具有相同的类型。
11.一种系统,包括:
至少一个物理处理器;
物理存储器,所述物理存储器包括计算机可执行指令,所述计算机可执行指令在被所述物理处理器执行时,使所述物理处理器:
识别视频游戏,所述视频游戏被配置为能够用于从云游戏环境内进行流式传输;
将经编译的着色器信息保存到缓存,所述经编译的着色器信息是在所述云游戏环境内执行所述视频游戏的实例而生成的;
接收在所述云游戏环境内加载所述视频游戏的新实例的请求;以及
至少部分地通过重复使用来自所述缓存的所述经编译的着色器信息,来加载所述视频游戏的所述新实例。
12.根据权利要求11所述的系统,
其中,所述计算机可执行指令还使所述物理处理器:将所述经编译的着色器信息与附加的经编译的着色器信息聚合,得到聚合后的经编译的着色器信息,所述附加的经编译的着色器信息是执行所述视频游戏的至少一个附加实例而生成的;
其中,重复使用来自所述缓存的所述经编译的着色器信息包括:使用所述聚合后的经编译的着色器信息。
13.根据权利要求12所述的系统,其中,将所述经编译的着色器信息与所述附加的经编译的着色器信息聚合包括:将来自所述经编译的着色器信息的至少一个独特部分的信息添加到存储库,所述存储库包括所述附加的经编译的着色器信息。
14.根据权利要求12所述的系统,其中:
所述视频游戏的所述实例在第一服务器上执行;
所述视频游戏的所述附加实例在第二服务器上执行;以及
将所述经编译的着色器信息与所述附加的经编译的着色器信息聚合包括:分别从所述第一服务器和所述第二服务器收集所述经编译的着色器信息和所述附加的经编译的着色器信息。
15.根据权利要求12所述的系统,其中:
所述视频游戏的所述实例被分配给第一用户账户;
所述视频游戏的所述附加实例被分配给第二用户账户;以及
将所述经编译的着色器信息与所述附加的经编译的着色器信息进行聚合包括:分别从所述第一用户账户和所述第二用户账户的游戏的生成中收集所述经编译的着色器信息和所述附加的经编译的着色器信息。
16.根据权利要求11所述的系统,其中,所述视频游戏的所述实例在所述云游戏环境内的所述视频游戏的测试过程中在所述云游戏环境内执行。
17.根据权利要求11所述的系统,其中,重复使用来自所述缓存的所述经编译的着色器信息包括:将所述经编译的着色器信息复制到一位置,执行所述视频游戏的所述新实例的计算系统被配置为在所述位置处存储和检索所述视频游戏的经编译的着色器信息。
18.根据权利要求11所述的系统,其中,重复使用来自所述缓存的所述经编译的着色器信息包括:
识别已被提供用于运行所述视频游戏的所述新实例的虚拟容器;以及
使所述经编译的着色器信息能够被所述虚拟容器访问。
19.根据权利要求11所述的系统,其中:
将所述经编译的着色器信息保存到所述缓存包括:将所保存的所述经编译的着色器信息指定为与用于执行所述视频游戏的所述实例的图形处理单元的类型相对应;以及
重复使用来自所述缓存的所述经编译的着色器信息是至少部分地响应于确定:所述视频游戏的所述新实例被配置为使用附加图形处理单元,所述附加图形处理单元与用于执行所述视频游戏的所述实例的图形处理单元具有相同的类型。
20.一种非暂态计算机可读介质,包括:一个或多个计算机可执行指令,所述一个或多个计算机可执行指令在被计算设备的至少一个处理器执行时,使所述计算设备:
识别视频游戏,所述视频游戏被配置为能够用于从云游戏环境内进行流式传输;
将经编译的着色器信息保存到缓存,所述经编译的着色器信息是在所述云游戏环境内执行所述视频游戏的实例而生成的;
接收在所述云游戏环境内加载所述视频游戏的新实例的请求;以及
至少部分地通过重复使用来自所述缓存的所述经编译的着色器信息,来加载所述视频游戏的所述新实例。
CN202180073085.4A 2020-10-25 2021-10-23 用于分发经编译的着色器的系统和方法 Pending CN116802610A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202063105320P 2020-10-25 2020-10-25
US63/105,320 2020-10-25
US202163194821P 2021-05-28 2021-05-28
US63/194,821 2021-05-28
US17/507,299 US20220126203A1 (en) 2020-10-25 2021-10-21 Systems and methods for distributing compiled shaders
US17/507,299 2021-10-21
PCT/US2021/056372 WO2022087502A1 (en) 2020-10-25 2021-10-23 Systems and methods for distributing compiled shaders

Publications (1)

Publication Number Publication Date
CN116802610A true CN116802610A (zh) 2023-09-22

Family

ID=81257183

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202180073109.6A Pending CN116964559A (zh) 2020-10-25 2021-10-23 用于云游戏系统的服务器侧托管环境
CN202180073113.2A Pending CN116802611A (zh) 2020-10-25 2021-10-23 应用程序的安全并发流式传输的系统和方法
CN202180073085.4A Pending CN116802610A (zh) 2020-10-25 2021-10-23 用于分发经编译的着色器的系统和方法
CN202180073074.6A Pending CN116802604A (zh) 2020-10-25 2021-10-23 会话重新连接和动态资源分配
CN202180073114.7A Pending CN116348854A (zh) 2020-10-25 2021-10-23 用于对应用程序进行流式传输的低时延初始化的系统和方法
CN202180073112.8A Pending CN116830084A (zh) 2020-10-25 2021-10-23 用于动态容器网络管理的服务网络方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202180073109.6A Pending CN116964559A (zh) 2020-10-25 2021-10-23 用于云游戏系统的服务器侧托管环境
CN202180073113.2A Pending CN116802611A (zh) 2020-10-25 2021-10-23 应用程序的安全并发流式传输的系统和方法

Family Applications After (3)

Application Number Title Priority Date Filing Date
CN202180073074.6A Pending CN116802604A (zh) 2020-10-25 2021-10-23 会话重新连接和动态资源分配
CN202180073114.7A Pending CN116348854A (zh) 2020-10-25 2021-10-23 用于对应用程序进行流式传输的低时延初始化的系统和方法
CN202180073112.8A Pending CN116830084A (zh) 2020-10-25 2021-10-23 用于动态容器网络管理的服务网络方法

Country Status (4)

Country Link
US (7) US20220129295A1 (zh)
EP (6) EP4232902A1 (zh)
CN (6) CN116964559A (zh)
WO (6) WO2022087514A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921592B2 (en) * 2020-07-20 2024-03-05 Google Llc Restoration of a computing session
US11803413B2 (en) * 2020-12-03 2023-10-31 International Business Machines Corporation Migrating complex legacy applications
US20230116110A1 (en) * 2021-10-08 2023-04-13 BlueStack Systems, Inc. Methods, Systems and Computer Program Products for Selective Routing of Software Instructions Between a Client Device and a Cloud Services Server
CN114996004B (zh) * 2022-05-30 2024-06-28 杭州迪普科技股份有限公司 会话的持续删除的方法和装置
US11984999B2 (en) 2022-09-12 2024-05-14 International Business Machines Corporation Smarter collaborative conferences

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363409B1 (en) 1995-04-24 2002-03-26 Microsoft Corporation Automatic client/server translation and execution of non-native applications
US7548238B2 (en) * 1997-07-02 2009-06-16 Nvidia Corporation Computer graphics shader systems and methods
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US20100146506A1 (en) * 2008-12-08 2010-06-10 Electronics And Telecommunications Research Institute SYSTEM AND METHOD FOR OFFERING SYSTEM ON DEMAND (SoD) VIRTUAL-MACHINE
US8410994B1 (en) 2010-08-23 2013-04-02 Matrox Graphics Inc. System and method for remote graphics display
KR20170129297A (ko) 2010-09-13 2017-11-24 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 게임 서버
JP5520190B2 (ja) * 2010-10-20 2014-06-11 株式会社ソニー・コンピュータエンタテインメント 画像処理システム、画像処理方法、動画像送信装置、動画像受信装置、プログラム及び情報記憶媒体
JP2012125451A (ja) * 2010-12-16 2012-07-05 Sony Computer Entertainment Inc ゲームシステム、ゲームシステムの制御方法、プログラム及び情報記憶媒体
US9412193B2 (en) * 2011-06-01 2016-08-09 Apple Inc. Run-time optimized shader program
US9773344B2 (en) * 2012-01-11 2017-09-26 Nvidia Corporation Graphics processor clock scaling based on idle time
JP5620433B2 (ja) * 2012-04-30 2014-11-05 泰章 岩井 情報処理システム、情報処理方法
US9152449B2 (en) 2012-07-13 2015-10-06 International Business Machines Corporation Co-location of virtual machines with nested virtualization
DE112013005689T5 (de) * 2012-11-28 2015-09-10 Nvidia Corporation Tragbare Spielekonsole
US20140274408A1 (en) * 2013-03-14 2014-09-18 Zynga Inc. Methods and systems for provisioning a game container within a cloud computing system
US9295915B2 (en) 2013-05-20 2016-03-29 Microsoft Technology Licensing, Llc Game availability in a remote gaming environment
US9451043B2 (en) * 2013-09-13 2016-09-20 Evie Labs, Inc. Remote virtualization of mobile apps
US9304877B2 (en) * 2014-01-24 2016-04-05 International Business Machines Corporation Mobile agent based memory replication
US10296391B2 (en) * 2014-06-30 2019-05-21 Microsoft Technology Licensing, Llc Assigning a player to a machine
US10007965B2 (en) * 2014-12-16 2018-06-26 Intel Corporation Dynamic kernel modification for graphics processing units
JP6526826B2 (ja) * 2015-03-06 2019-06-05 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー クラウド上のアプリケーションのための予測的なインスタントプレイ技術
EP3329398A4 (en) 2015-07-30 2018-07-25 Wix.com Ltd. System integrating a mobile device application creation, editing and distribution system with a website design system
US9704270B1 (en) 2015-07-30 2017-07-11 Teradici Corporation Method and apparatus for rasterizing and encoding vector graphics
US10268493B2 (en) 2015-09-22 2019-04-23 Amazon Technologies, Inc. Connection-based resource management for virtual desktop instances
US20170170990A1 (en) * 2015-12-15 2017-06-15 Microsoft Technology Licensing, Llc Scalable Tenant Networks
US10037221B2 (en) * 2015-12-28 2018-07-31 Amazon Technologies, Inc. Management of virtual desktop instance pools
JP2017174038A (ja) 2016-03-23 2017-09-28 富士通株式会社 情報処理システム、情報処理方法およびプログラム
US10972574B2 (en) * 2016-04-27 2021-04-06 Seven Bridges Genomics Inc. Methods and systems for stream-processing of biomedical data
US10049426B2 (en) 2017-01-03 2018-08-14 Qualcomm Incorporated Draw call visibility stream
US10341198B2 (en) 2017-03-17 2019-07-02 Verizon Patent And Licensing Inc. Configuring a back-end container and a corresponding front-end proxy container on a network device
US10491666B2 (en) 2017-04-03 2019-11-26 Sony Interactive Entertainment America Llc Systems and methods for using a distributed game engine
US10838920B2 (en) * 2017-05-05 2020-11-17 Esoptra NV Plug-in function platform and methods
US10610779B2 (en) 2017-06-19 2020-04-07 Sony Interactive Entertainment LLC Methods and systems for scheduling game play of a video game
US10721214B2 (en) 2017-10-18 2020-07-21 Citrix Systems, Inc. Method to track SSL session states for SSL optimization of SaaS based applications
US10668378B2 (en) 2018-01-26 2020-06-02 Valve Corporation Distributing shaders between client machines for precaching
US10560349B2 (en) 2018-01-31 2020-02-11 Salesforce.Com, Inc. Data consistency of policy enforcement for distributed applications
JP7073494B2 (ja) 2018-04-10 2022-05-23 グーグル エルエルシー ゲームレンダリングにおけるメモリ管理
US10848571B2 (en) 2018-09-24 2020-11-24 Citrix Systems, Inc. Systems and methods for consistent enforcement policy across different SaaS applications via embedded browser
US11016793B2 (en) * 2018-11-26 2021-05-25 Red Hat, Inc. Filtering based containerized virtual machine networking
US11077362B2 (en) 2018-12-03 2021-08-03 Sony Interactive Entertainment LLC Machine learning driven resource allocation
US10908771B2 (en) * 2019-01-31 2021-02-02 Rypplzz, Inc. Systems and methods for augmented reality with precise tracking
US10918941B2 (en) 2019-03-27 2021-02-16 Electronic Arts Inc. Predictive execution of distributed game engines
US11297116B2 (en) 2019-12-04 2022-04-05 Roblox Corporation Hybrid streaming
US20210208918A1 (en) 2020-01-07 2021-07-08 Citrix Systems, Inc. Intelligent session timeouts for virtual workspace
US11418852B2 (en) 2020-05-28 2022-08-16 Nvidia Corporation Detecting latency anomalies from pipeline components in cloud-based systems

Also Published As

Publication number Publication date
EP4232901A1 (en) 2023-08-30
WO2022087500A1 (en) 2022-04-28
CN116802611A (zh) 2023-09-22
US20220129295A1 (en) 2022-04-28
WO2022087503A1 (en) 2022-04-28
WO2022087502A1 (en) 2022-04-28
US20220126202A1 (en) 2022-04-28
CN116802604A (zh) 2023-09-22
EP4232899A1 (en) 2023-08-30
WO2022087499A1 (en) 2022-04-28
US11638870B2 (en) 2023-05-02
CN116348854A8 (zh) 2023-09-22
US20220126203A1 (en) 2022-04-28
CN116964559A (zh) 2023-10-27
EP4232897A1 (en) 2023-08-30
CN116348854A (zh) 2023-06-27
US20220129296A1 (en) 2022-04-28
CN116830084A (zh) 2023-09-29
US20220126199A1 (en) 2022-04-28
WO2022087514A1 (en) 2022-04-28
US20230336624A1 (en) 2023-10-19
WO2022087501A1 (en) 2022-04-28
EP4232900A1 (en) 2023-08-30
US20220131943A1 (en) 2022-04-28
EP4232902A1 (en) 2023-08-30
EP4232896A1 (en) 2023-08-30
US11583768B2 (en) 2023-02-21

Similar Documents

Publication Publication Date Title
US20220126203A1 (en) Systems and methods for distributing compiled shaders
JP2024054287A (ja) 3次元モデル共有のための方法およびシステム
JP2021185409A (ja) Ar/vrディスプレイシステムにおける電流ドレイン低減
US10908428B2 (en) Multiple-device system with multiple power and data configurations
US20220130096A1 (en) Reducing latency of an application in a server-side hosted environment
CN113316754A (zh) 用于在用于人工现实界面的跟踪真实世界对象的模式之间转换的系统和方法
US11397467B1 (en) Tactile simulation of initial contact with virtual objects
US11715331B1 (en) Apparatuses, systems, and methods for mapping corneal curvature
US12028419B1 (en) Systems and methods for predictively downloading volumetric data
US10536666B1 (en) Systems and methods for transmitting aggregated video data
JP2023536064A (ja) 交互サンプリングを使用した眼追跡
US10983591B1 (en) Eye rank
JP2022518105A (ja) 人工現実に基づくユーザグループ
US20230053497A1 (en) Systems and methods for performing eye-tracking
US11823498B1 (en) Systems and methods for hand pose estimation from video
US11706266B1 (en) Systems and methods for assisting users of artificial reality platforms
US20220212059A1 (en) Direct write method and dynamic workout content system, markup language, and execution engine
WO2022266222A1 (en) Systems and methods for correcting data to match user identity
US11870852B1 (en) Systems and methods for local data transmission
Ninan SYSTEMS AND METHODS FOR IMPROVED IMAGE STABILIZATION
CN117882032A (zh) 用于执行眼动追踪的系统和方法
WO2023023206A1 (en) Systems and methods for performing eye-tracking

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination