Patents Assigned to Caustic Graphics, Inc.
-
Publication number: 20150042651Abstract: During tracing of a primary ray in a 3-D space (e.g., a 3-D scene in graphics rendering), a ray is found to intersect a primitive (e.g., a triangle) located in the 3-D space. Secondary ray(s) may be generated for a variety of purposes. For example, occlusion rays may be generated to test occlusion of a point of intersection between the primary ray and primitive is illuminated by any of the light(s). An origin for each secondary ray can be modified from the intersection point based on characteristics of the primitive intersected. For example, an offset from the intersection point can be calculated using barycentric coordinates of the intersection point and interpolation of one or more parameters associated with vertices defining the primitive. These parameters may include a size of the primitive and differences between a geometric normal for the primitive and a respective additional vector supplied with each vertex.Type: ApplicationFiled: August 8, 2013Publication date: February 12, 2015Applicant: CAUSTIC GRAPHICS, INC.Inventor: Aaron Dwyer
-
Publication number: 20140269760Abstract: Aspects relate to arbitrating access to an interconnect among multiple ports. For example, input ports receive requests for access to identified destination ports and buffer these in one or more FIFOs. A picker associated with respective FIFO(s) begins an empty arbitration packet that includes a location for each output port and fills one or more locations in the packet, such as based on a prioritization scheme. Each packet is passed in a ring to another picker, which performs a fill that does not conflict with previously filled locations in that packet. Each picker has an opportunity to place requests in each of the packets. Results of the arbitration are dispatched to reorder buffers associated with respective output ports and used to schedule the interconnect. Each arbitration cycle thus produces a set of control information for an interconnect to be used in subsequent data transfer steps.Type: ApplicationFiled: March 12, 2013Publication date: September 18, 2014Applicant: CAUSTIC GRAPHICS, INC.Inventors: Joseph M. Richards, Jason Rupert Redgrave, Steven John Clohset
-
Publication number: 20140232720Abstract: Aspects comprise systems implementing 3-D graphics processing functionality in a multiprocessing system. Control flow structures are used in scheduling instances of computation in the multiporcessing system, where different points in the control flow structure serve as points where deferral of some instances of computation can be performed in favor of scheduling other instances of computation. In some examples, the control flow structure identifies particular tasks, such as intersection testing of a particular portion of an acceleration structure, and a particular element of shading code. In some examples, the aspects are used in 3-D graphics processing systems that can perform ray tracing based rendering.Type: ApplicationFiled: December 28, 2013Publication date: August 21, 2014Applicant: Caustic Graphics, Inc.Inventors: Luke T. Peterson, James Alexander McCombe, Ryan R. Salsbury, Steven J. Clohset
-
Publication number: 20140146049Abstract: In one aspect, a method provides for iteratively taking passes of samples for each pixel of a set of pixels. Initially, the set of pixels can be all of the pixels of an image. For each pixel, an accumulated color at the beginning of a pass and at the end of a pass can be compared. If a difference between these is within a threshold, a convergence count, which begins at an initial value, is reduced. If the difference is not within the threshold, then the convergence count is reset. When the convergence count reaches a preset value, then the pixel is considered converged and removed from the set. However, if a pixel adjacent to a converged pixel fails a convergence test, then the converged pixel is reset to unconverged and returned to the set and at least a minimum number of additional sample passes are undertaken for that pixel.Type: ApplicationFiled: November 28, 2012Publication date: May 29, 2014Applicant: Caustic Graphics, Inc.Inventors: Cüneyt Özdas, Steven Blackmon
-
Publication number: 20140111515Abstract: Aspects can be for ray tracing of 3-D scenes, and include dynamically controlling a population of rays being stored in a memory, to keep the population within a target, a memory footprint or other resource usage specification. An example includes controlling the population by examining indicia associated with rays returning from intersection testing, to be shaded, the indicia correlated with behavior of shaders to be run for those rays, such that population control selects, or reorders rays for shading, to prioritize shading of rays whose shaders are expected to produce fewer rays.Type: ApplicationFiled: March 15, 2013Publication date: April 24, 2014Applicant: CAUSTIC GRAPHICS, INC.Inventor: Caustic Graphics, Inc.
-
Patent number: 8692834Abstract: In some aspects, systems and methods provide for forming groupings of a plurality of independently-specified computation workloads, such as graphics processing workloads, and in a specific example, ray tracing workloads. The workloads include a scheduling key, which is one basis on which the groupings can be formed. Workloads grouped together can all execute from the same source of instructions, one or more different private data elements. Such workloads can recursively instantiate other workloads that reference the same private data elements. In some examples, the scheduling key can be used to identify a data element to be used by all the workloads of a grouping. Memory conflicts to private data elements are handled through scheduling of non-conflicted workloads or specific instructions an deferring conflicted workloads instead of locking memory locations.Type: GrantFiled: August 6, 2012Date of Patent: April 8, 2014Assignee: Caustic Graphics, Inc.Inventors: Luke Tilman Peterson, James Alexander McCombe, Steven John Clohset, Jason Rupert Redgrave
-
Publication number: 20140078145Abstract: Aspects include API interfaces for interfacing shaders with other components and/or code modules that provide ray tracing functionality. For example, API calls may allow direct contribution of light energy to a buffer for an identified pixel, and allow emission of new rays for intersection testing alone or in bundles. The API also can provide a mechanism for associating arbitrary data with ray definition data defining a ray to be tested through a shader using the emit ray call. The arbitrary data is provided to a shader associated with an object that is identified subsequently as having been intersected by the ray. The data can include code, or a pointer to code, that can be used by or run after the shader. The data also can be propagated through a series of shaders, and associated with rays instantiated in each shader. Recursive shaders can be recompiled as non-recursive shaders interfacing with API semantics according to the description.Type: ApplicationFiled: November 22, 2013Publication date: March 20, 2014Applicant: CAUSTIC GRAPHICS, INC.Inventors: James Alexander McCombe, Luke T. Peterson, Ryan R. Salsbury, Sean Matthew Gies
-
Patent number: 8674987Abstract: Aspects can be for ray tracing of 3-D scenes, and include dynamically controlling a population of rays being stored in a memory, to keep the population within a target, a memory footprint or other resource usage specification. An example includes controlling the population by examining indicia associated with rays returning from intersection testing, to be shaded, the indicia correlated with behavior of shaders to be run for those rays, such that population control selects, or reorders rays for shading, to prioritize shading of rays whose shaders are expected to produce fewer rays. The indicia can include a respective weight for each ray. In an example, analyzer modules examine hints associated with shaders bound to intersected primitives. Population control aspects can influence ray diversity in memory, including encouraging a varying diversity pattern as rendering of a given scene or frame progresses, based on system resource indicia, rendering metrics and so on.Type: GrantFiled: April 30, 2010Date of Patent: March 18, 2014Assignee: Caustic Graphics, Inc.Inventors: Luke Tilman Peterson, Ryan R. Salsbury, Sean Matthew Gies, Steven John Clohset
-
Publication number: 20140071123Abstract: Ray tracing, and more generally, graphics operations taking place in a 3-D scene, involve a plurality of constituent graphics operations. Responsibility for executing these operations can be distributed among different sets of computation units. The sets of computation units each can execute a set of instructions on a parallelized set of input data elements and produce results. These results can be that the data elements can be categorized into different subsets, where each subset requires different processing as a next step. The data elements of these different subsets can be coalesced so that they are contiguous in a results set. The results set can be used to schedule additional computation, and if there are empty locations of a scheduling vector (after accounting for the members of a given subset), then those empty locations can be filled with other data elements that require the same further processing as that subset.Type: ApplicationFiled: August 5, 2013Publication date: March 13, 2014Applicant: Caustic Graphics, Inc.Inventors: Luke Tilman Peterson, James Alexander McCombe, Ryan R. Salsbury, Stephen Purcell
-
Patent number: 8619079Abstract: Aspects comprise systems implementing 3-D graphics processing functionality in a multiprocessing system. Control flow structures are used in scheduling instances of computation in the multiprocessing system, where different points in the control flow structure serve as points where deferral of some instances of computation can be performed in favor of scheduling other instances of computation. In some examples, the control flow structure identifies particular tasks, such as intersection testing of a particular portion of an acceleration structure, and a particular element of shading code. In some examples, the aspects are used in 3-D graphics processing systems that can perform ray tracing based rendering.Type: GrantFiled: September 11, 2012Date of Patent: December 31, 2013Assignee: Caustic Graphics, Inc.Inventors: Luke Tilman Peterson, James Alexander McCombe, Ryan R. Salsbury, Stephen John Clohset
-
Patent number: 8593458Abstract: Aspects include API interfaces for interfacing shaders with other components and/or code modules that provide ray tracing functionality. For example, API calls may allow direct contribution of light energy to a buffer for an identified pixel, and allow emission of new rays for intersection testing alone or in bundles. The API also can provide a mechanism for associating arbitrary data with ray definition data defining a ray to be tested through a shader using the emit ray call. The arbitrary data is provided to a shader associated with an object that is identified subsequently as having been intersected by the ray. The data can include code, or a pointer to code, that can be used by or run after the shader. The data also can be propagated through a series of shaders, and associated with rays instantiated in each shader. Recursive shaders can be recompiled as non-recursive shaders interfacing with API semantics according to the description.Type: GrantFiled: September 21, 2009Date of Patent: November 26, 2013Assignee: Caustic Graphics, Inc.Inventors: James Alexander McCombe, Luke Tilman Peterson, Ryan R. Salsbury, Sean Matthew Gies
-
Publication number: 20130222402Abstract: In some aspects, systems and methods provide for forming groupings of a plurality of independently-specified computation workloads, such as graphics processing workloads, and in a specific example, ray tracing workloads. The workloads include a scheduling key, which is one basis on which the groupings can be formed. Workloads grouped together can all execute from the same source of instructions, one or more different private data elements. Such workloads can recursively instantiate other workloads that reference the same private data elements. In some examples, the scheduling key can be used to identify a data element to be used by all the workloads of a grouping. Memory conflicts to private data elements are handled through scheduling of non-conflicted workloads or specific instructions an deferring conflicted workloads instead of locking memory locations.Type: ApplicationFiled: August 6, 2012Publication date: August 29, 2013Applicant: Caustic Graphics, Inc.Inventor: Caustic Graphics, Inc.
-
Patent number: 8502820Abstract: Ray tracing, and more generally, graphics operations taking place in a 3-D scene, involve a plurality of constituent graphics operations. Scheduling of graphics operations for concurrent execution on a computer may increase throughput. In aspects herein, constituent graphics operations are scheduled in groups, having members selected according to disclosed aspects. Processing for specific graphics operations in a group can be deferred if all the operations in the group cannot be further tested concurrently. Graphics operations that have been deferred are recombined into two or more different groups and ultimately complete processing, through a required number of iterations of such process. In one application, the performance of the graphics operations perform a search in which respective 1:1 matches between different types of geometric shapes involved in the 3-D scene are identified.Type: GrantFiled: June 16, 2012Date of Patent: August 6, 2013Assignee: Caustic Graphics, Inc.Inventors: Luke Tilman Peterson, James Alexander McCombe, Ryan R. Salsbury, Stephen Purcell
-
Patent number: 8482561Abstract: Aspects include API interfaces for interfacing shaders with other components and/or code modules that provide ray tracing functionality. For example, API calls may allow direct contribution of light energy to a buffer for an identified pixel, and allow emission of new rays for intersection testing alone or in bundles. The API also can provide a mechanism for associating arbitrary data with ray definition data defining a ray to be tested through a shader using the emit ray call. The arbitrary data is provided to a shader associated with an object that is identified subsequently as having been intersected by the ray. The data can include code, or a pointer to code, that can be used by or run after the shader. The data also can be propagated through a series of shaders, and associated with rays instantiated in each shader.Type: GrantFiled: September 21, 2009Date of Patent: July 9, 2013Assignee: Caustic Graphics, Inc.Inventors: James Alexander McCombe, Luke Tilman Peterson, Ryan R. Salsbury, Sean Matthew Gies
-
Publication number: 20130147803Abstract: For ray tracing scenes composed of primitives, systems and methods can traverse rays through an acceleration structure. The traversal can be implemented by concurrently testing a plurality of nodes of the acceleration structure for intersection with a sequence of one or more rays. Such testing can occur in a plurality of test cells. Leaf nodes of the acceleration structure can bound primitives, and a sequence primitives can be tested concurrently for intersection in the test cells against a plurality of rays that have intersected a given leaf node. Intersection testing of a particular leaf node can be deferred until a sufficient quantity of rays have been collected for that node.Type: ApplicationFiled: June 18, 2012Publication date: June 13, 2013Applicant: Caustic Graphics Inc.Inventors: Luke Tilman PETERSON, James Alexander McCOMBE, Ryan R. SALSBURY
-
Patent number: 8441482Abstract: Aspects include systems, methods, and media for implementing methods relating to detection of invalid intersections during ray tracing. Invalid intersections can arise from imprecision in computer-based number representation, causing ray origins to be located inappropriately. In some aspects, a ray can be associated with information relating to an expected angle between the ray's direction and a normal for a to-be-identified primitive intersected by that ray. If the angle between the ray's direction and the normal of an intersected primitive is within expectations, then that information can be used in predicting whether the intersection is valid. Such expectation information can be presented as a single bit determined by a shader performing a dot product of the ray and a normal of a primitive intersected by a parent ray, or can be obtained as a by-product of ray/primitive intersection testing.Type: GrantFiled: September 21, 2009Date of Patent: May 14, 2013Assignee: Caustic Graphics, Inc.Inventors: Cüneyt Özdaç, Jason Rupert Redgrave
-
Publication number: 20130113801Abstract: A profiler for a ray tracing renderer interfaces with the renderer to collect rendering information, such as ray definition information, a pixel origin, objects hit, shader invocation, and related rays. In an interface, an artist views a simplified 3-D scene model and a rendered 2-D image. A pixel in the 2-D image is selectable; the profiler responds by populating the simplified 3-D scene with rays that contributed to that pixel. Rays can be displayed in the simplified 3-D scene to visually convey information about characteristics of each ray, such as whether the ray intersected an object, portions of the scene where it is occluded, and a direction. Statistics can be produced by the profiler that convey information such as relative computational complexity to render particular pixels. The profiler can step through multiple passes (e.g., multiple frames and passes of a multipass rendering), and the UI can allow pausing and stepping.Type: ApplicationFiled: November 6, 2012Publication date: May 9, 2013Applicant: CAUSTIC GRAPHICS, INC.Inventor: Caustic Graphics, Inc.
-
Patent number: 8421801Abstract: Systems, methods, and computer readable media embodying such methods provide for allowing specification of per-ray clipping information that defines a sub-portion of a 3-D scene in which the ray should be traced. The clipping information can be specified as a clip distance from a ray origin, as an end value of a parametric ray definition, or alternatively the clipping information can be built into a definition of the ray to be traced. The clipping information can be used to check whether portions of an acceleration structure need to be traversed, as well as whether primitives should be tested for intersection. Other aspects include specifying a default object that can be returned as intersected when no primitive was intersected within the sub-portion defined for testing. Further aspects include allowing provision of flags interpretable by an intersection testing resource that control what the intersection testing resource does, and/or what information it reports after conclusion of testing of a ray.Type: GrantFiled: September 8, 2009Date of Patent: April 16, 2013Assignee: Caustic Graphics, Inc.Inventors: Ryan R. Salsbury, James Alexander McCombe, Stephen Purcell, Luke Tilman Peterson
-
Publication number: 20130050213Abstract: For ray tracing scenes composed of primitives, systems and methods—accelerate ray/primitive intersection identification by testing rays against elements of geometry acceleration data (GAD) in a parallelized intersection testing resource. Groups of rays can be described as shared attribute information and individual ray data for ray data transfer. A host hosts shading and/or management processes can control the testing resource and adapting the ray tracing. The GAD elements can be arranged in a graph, and rays collected into collections based on whether a ray intersects a given element. When a collection is deemed ready for further testing, it is tested for intersection with GAD elements connected, in the graph, to the given element. The graph can be hierarchical such that rays of a given collection are tested against children of the GAD element associated with the given collection.Type: ApplicationFiled: August 5, 2012Publication date: February 28, 2013Applicant: Caustic Graphics, Inc.Inventors: James Alexander McCombe, Ryan R. Salsbury, Luke Tilman Peterson
-
Publication number: 20120324458Abstract: Aspects include computation systems that can identify computation instances that are not capable of being reentrant, or are not reentrant capable on a target architecture, or are non-reentrant as a result of having a memory conflict in a particular execution situation. A system can have a plurality of computation units, each with an independently schedulable SIMD vector. Computation instances can be defined by a program module, and a data element(s) that may be stored in a local cache for a particular computation unit. Each local cache does not maintain coherency controls for such data elements. During scheduling, a scheduler can maintain a list of running (or runnable) instances, and attempt to schedule new computation instances by determining whether any new computation instance conflicts with a running instance and responsively defer scheduling. Memory conflict checks can be conditioned on a flag or other indication of the potential for non-reentrancy.Type: ApplicationFiled: February 8, 2012Publication date: December 20, 2012Applicant: Caustic Graphics, Inc.Inventors: Luke Tilman PETERSON, James Alexander McCombe