IP Library Granted Patent US 9,349,214
Granted Patent B2
US 9,349,214 · App. 12/195,399 · Granted May 24, 2016

Systems and methods for reproduction of shadows from multiple incident light sources

Inventors: Rowan Wyborn (Page, AU); Mathi Nagarajan (Nicholls, AU)
Assignee: Take-Two Interactive Software, Inc.
G06T15/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,349,214
App. No.
12/195,399
Granted
May 24, 2016
Kind
B2
Abstract

Systems and methods are provided for simulating shadows in a scene. In an embodiment, two or more light sources that cast shadows from objects are identified. Each of those light sources is then assigned to a channel in a shadow mask buffer. The shadows are then accumulated into the shadow mask buffer and may be combined with corresponding lights to render the scene.

Claims (59)

1. A method for simulating shadows in a scene, comprising:

identifying two or more light sources, each light source casting at least one shadow from one or more objects, wherein for each of the two or more light sources identifying by:

marking each respective light source to indicate if the respective light source should cast at least one shadow,

determining which binary space partitioning (BSP) leaves receive light from the respective light source,

computing a list of the two or more light sources that should affect the respective BSP leaves,

traversing, during a scene, all visible BSP leaves, and updating the list of the two or more light sources that should be shadow-casting that affect those visible BSP leaves;

assigning each of the two or more light sources to one of at least one channel in a shadow mask buffer;

accumulating the one or more shadows into the shadow mask buffer;

combining the accumulated shadows with corresponding lights to render the scene, and

generating the scene with shadows using a pixel shader in a processor.

2. The method according to claim 1 , wherein the scene is partitioned by one or more planes that define two or more convex sections within the scene.

3. The method according to claim 2 , further comprising identifying which one or more of the convex sections within the scene are visible.

4. The method according to claim 3 , wherein identifying the two or more light sources that cast the one or more shadows from the one or more objects comprises maintaining a list associating one or more of the visible convex sections in which the one or more objects appear with one or more of the light sources which cast the shadows from the one or more objects.

5. The method according to claim 1 , wherein the shadow mask buffer is a four-channel buffer.

6. The method according to claim 5 , wherein the four-channel buffer is an RBGA buffer.

7. The method according to claim 1 , wherein assigning each of the two or more light sources to one of the at least one channels in the shadow mask buffer comprises:

for each pair of the light sources that overlap, calculating an amount by which the pair overlap;

for each pair of the light sources that overlap, storing a list item comprising identifiers for each of the light sources in the pair and the calculated amount by which the pair overlap into an overlap list;

sorting the overlap list by the calculated amount by which the stored pairs overlap.

8. The method according to claim 7 , further comprising, for each list item in the overlap list:

for each light source identified in the list item that has not been assigned to any channel, assigning the light source to the one of the channels of which the light source has the least overlap with other light sources of the same channel.

9. The method according to claim 8 , further comprising, for each light source not identified in any list item, assigning the light source to any of the channels.

10. The method according to claim 7 , wherein assigning each of the one or more light sources to one of the at least one channels in the shadow mask buffer further comprises expanding bounds associated with each of the one or more light sources.

11. The method according to claim 10 , wherein expanding bounds associated with each of the one or more light sources comprises converting square bounds to spherical bounds.

12. The method according to claim 1 , wherein accumulating the one or more shadows into the shadow mask buffer comprises, for each of the shadows:

rendering the shadow casting object into a shadow map; and

rendering the shadow frustum using a stencil buffer.

13. The method according to claim 12 , wherein the shadow casting object is rendered into a shadow map from a point of view of the light source that casts the shadow.

14. The method according to claim 12 , wherein the shadow frustum is rendered using a stencil buffer from the point of view of a camera.

15. The method according to claim 12 , wherein accumulating the one or more shadows into the shadow mask buffer further comprises, for each of the shadows:

marking a region of the stencil buffer that may receive the shadow; and

rendering the shadow frustum into the marked region of the stencil buffer.

16. The method according to claim 15 , wherein rendering the shadow frustum into the marked region of the stencil buffer is accomplished by a pixel shader.

17. The method according to claim 12 , further comprising clearing the stencil buffer.

18. The method according to claim 1 , further comprising:

for each of one or more pixels, computing an effect of each of the light sources upon the pixel; and

accumulating the computed effects for all of the one or more pixels.

19. The method according to claim 18 , wherein computing the effect of each of the light sources upon each of the one or more pixels comprises sampling the shadow mask buffer.

20. The method according to claim 19 , wherein computing the effect of each of the light sources upon each of the one or more pixels further comprises sampling a light attenuation map.

21. The method according to claim 18 , wherein computing and accumulating the effects of each of the light sources upon each of the pixels is performed by a pixel shader.

22. The method according to claim 21 , wherein the pixel shader employs filtering techniques to filter one or more of the computed effects.

23. The method according to claim 21 , wherein the pixel shader computes and accumulates the effects of each of the light sources upon each of the pixels in a single pass.

24. A system for simulating shadows in a scene, comprising:

at least two light sources, the at least two light sources casting at least one shadow from at least one object;

an arrangement for identifying the light sources, wherein for each of the light sources, the arrangement identifies by:

marking each respective light source to indicate if the respective light source should cast at least one shadow,

determining which binary space partitioning (BSP) leaves receive light from the respective light source,

computing a list of the two or more light sources that should affect the respective BSP leaves,

traversing, during a scene, all visible BSP leaves, and updating the list of the two or more light sources that should be shadow-casting that affect those visible BSP leaves;

at least one channel, the at least one channel having a shadow mask buffer, the at least two light sources being assigned to the at least one channel,

wherein the at least one shadow is accumulated into the shadow mask buffer, and the accumulated shadows being combined with the corresponding lights to render the scene.

25. A non-transitory computer-readable storage medium encoded with instructions to be executed by a processor, the instructions which, when executed by the processor, cause the performance of a method for simulating shadows in a scene, comprising:

identifying two or more light sources that cast one or more shadows from one or more objects, wherein for each of the two or more light sources identifying by:

marking each respective light source to indicate if the respective light source should cast at least one shadow,

determining which binary space partitioning (BSP) leaves receive light from the respective light source,

computing a list of the two or more light sources that should affect the respective BSP leaves,

traversing during a scene all visible BSP leaves, and updating the list of the two or more light sources that should be shadow-casting that affect those visible BSP leaves;

assigning each of the two or more light sources to one of at least one channels in a shadow mask buffer; and

accumulating the one or more shadows into the shadow mask buffer.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Jul 22, 2020
From: LESLIE BENZIES; DAN HOUSER; SAM HOUSER; ANOTHER GAME COMPANY LP
To: TAKE TWO INTERACTIVE SOFTWARE, INC.
Reel/Frame 053276/0123 →
RELEASE OF SECURITY INTEREST Recorded Feb 14, 2019
From: WELLS FARGO CAPITAL FINANCE, LLC (F/K/A WELLS FARGO FOOTHILL, INC.)
To: TAKE-TWO INTERACTIVE SOFTWARE, INC.
Reel/Frame 048327/0555 →
CONFIRMATION OF SECURITY INTEREST GRANT (PATENTS) Recorded Oct 18, 2011
From: TAKE-TWO INTERACTIVE SOFTWARE, INC.
To: WELLS FARGO CAPITAL FINANCE INC.
Reel/Frame 027083/0001 →
SECURITY AGREEMENT Recorded Mar 23, 2009
From: TAKE TWO INTERACTIVE SOFTWARE, INC.
To: ANOTHER GAME COMPANY LP; HOUSER, SAM; HOUSER, DAN; BENZIES, LESLIE
Reel/Frame 022436/0328 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2009
From: WYBORN, ROWAN; NAGARAJAN, MATHI
To: TAKE TWO INTERACTIVE SOFTWARE, INC.
Reel/Frame 022098/0420 →
CONFIRMATION OF SECURITY INTEREST GRANT Recorded Oct 9, 2008
From: TAKE-TWO INTERACTIVE SOFTWARE, INC.
To: WELLS FARGO FOOTHILL, INC., AS AGENT
Reel/Frame 021655/0306 →
Continuity (1)
Related Publication 20100045675A1 · Feb 25, 2010