Technical
Q. What operating systems and hardware platforms does CausticRT support?
A. CausticRT will support all 3 major operating systems. Mac OS X (Leopard) and Windows XP are available today, with Linux forthcoming (based on demand).
Q. What workstations have you qualified to run CausticRT?
A. CausticRT is currently qualified on a MacPro 3,1 and 4,1 and a Dell T7400 with 8 cores, and 4GB RAM. The CausticOne card requires a single 4-lane PCIe southbridge slot.
Q. What is the power consumption of the CausticOne card?
A. The CausticOne card uses approximately 30 Watts.
Q. What kind of architecture is CausticOne based on?
A. CausticOne is an optional co-processor that works seamlessly with CausticGL. It is a 4-lane, single slot, bus-powered PCI express card that uses two FPGA chips to allow for easy field updates. There's also 4GB of standard DDR2 SO-DIMM memory, similar to what is found in laptops.
Q. What are the bus and memory speeds of the CausticOne card?
A. CausticOne is a massively parallel scheduler that optimizes work for CPUs, GPUs, and other stream processors.
Q. Is the CausticOne card multi-threaded?
A. The CausticOne connects using a 4 lane PCI express 1.1, and uses a single bank of DDR2 memory per FPGA. The fact that it can achieve this performance level with that amount of bandwidth is a testament to the efficiency of the entire design.
Q. Has CausticGL been compiled to support 64-bit addressing?
A. Yes! Our developer version of CausticGL supports 64 bit addressing.
Q. How does the CausticRT platform enable highly parallel CPUs and GPUs to massively accelerate raytracing?
A. When light rays are scattered in many directions (incoherent rays), tracing and shading them requires access to disparate parts of the scene: a previously impossible caching task. The CausticRT raytracing platform thrives on the incoherent rays in a complex scene, organizing them into a data flow that takes advantage of the full computational power of CPUs and GPUs.
Q. Does CausticOne support double precision floating point?
A. The current generation Caustic hardware does not support double precision floating point.
Q. What would happen if a developer wanted to use the existing OpenGL/DirectX interface to their GPU in addition to the CausticRT platform?
A. The CausticRT platform is independent of the existing OpenGL/DirectX libraries already on your system. You can use CausticRT alongside those existing interfaces and even move data between them in order to build a hybrid rendering system, if it makes sense for the application.
Q. I understand that CausticOne is a development board. How will the production board (CausticTwo) be different?
A. CausticTwo will be fabricated as a high performance ASIC, rather than the lower performance FPGA that CausticOne is based on. This means it will be able to clock at 350MHz and have 4 times the logic density. Additionally, CausticTwo will contain other efficiency improvements based on applying the research done with CausticOne. In general, any application that runs on CausticOne will run over 10 times faster on CausticTwo.
Q. What would happen if a GPU or CPU manufacturer developed a technology which allowed their devices to support raytracing with high efficiency?
A. The CausticGL API is being formed into an industry-standard interface for programming raytracing-based systems. The Caustic hardware is the most efficient accelerator of raytracing today, yet the CausticRT platform will work without the Caustic hardware since it includes a multi-threaded fallback to the Intel CPU. We are looking at providing fallbacks to other hardware, such as GPUs, depending on their ability to raytrace efficiently.
Q. I understand CausticGL is based on the OpenGL standard. My renderer uses DirectX, so can I still port to CausticRT?
A. The CausticRT platform is independent of the existing OpenGL/DirectX libraries already on your system. You can use the CausticRT platform alongside those existing interfaces and even move data between them in order to build a hybrid rendering system, if it makes sense for the application. Caustic Graphics can, in the future, support Direct3D directly, but that will require that we add our own raytracing extensions.
Q. Why can't I get the same raytracing performance you're showing on a GPU or multicore CPU?
A. Thanks to Moore's law, CPUs and GPUs have evolved sufficiently to solve the intersection of rays on a surface. However, they're not architected to solve the other component of the raytracing problem: data management. Thus, I/O is now the bottleneck for efficiently raytracing on a CPU or GPU. Our algorithms solve the data management component of the problem, and we use fixed-function hardware to schedule the shading information to a GPU or CPU so that it can shade triangles efficiently, as if it were rasterizing.
Q. What geometric primitives are supported?
A. The CausticRT platform supports triangles; and the vast majority of 3D graphics can be realized with these primitives. For example, even if you were performing a volumetric rendering, you could create a triangle-based structure of voxel shells for your dataset.
Q. What are the current limits on scene complexity?
A. The CausticRT platform supports triangles. With 2GB of memory (what we ship in CausticOne) we can support 100M+ uninstanced vertices with no paging required. In CausticTwo, we will support in excess of 400M+ vertices and will be providing a paging scheme to support even larger datasets.
Q. What sort of textures are supported?
A. The CausticRT platform is based on OpenGL ES 2.0. See OpenGL ES 2.0's documentation for available texture formats.
Q. Is there a restriction on the number of lights you can have in a scene?
A. There is no restriction on the number of lights you can use in a scene rendered by CausticRT.
Q. Do you support lighting models such as metropolis light transport, radiosity, path tracing, or any other global illumination algorithms?
A. It's important to note that CausticRT is a raytracing acceleration platform, not a renderer. Caustic Graphics has developed technology that supports the massive acceleration of renderers. Thus, you can choose whichever lighting model you wish to implement.
Q. How does the image quality compare with high-quality renderers like mental ray or Brazil?
A. Image quality is determined by the renderer and the tradeoffs that the renderer makes. CausticRT is a raytracing acceleration platform, not a renderer.
Q. Does CausticRT support high end features, such as Antialiasing, Depth-of-Field, Global Illumination, Motion Blur, etc.
A. Caustic is a raytracing acceleration platform. You are free to define the features and techniques that you want to apply in your renderer, and to create whatever "look" you want to achieve.
Q. Can CausticRT accelerate transforming and deforming geometries?
A. CausticRT's acceleration structure construction is extremely efficient, but it also has the ability to reuse parts of the acceleration structure that don't need to change between rendering passes, as well as perform fast transformations (rotation, translation, uniform scaling) on selective parts of the acceleration structure for even greater performance.
Q. Can CausticRT render Non-Uniform Rational B-Splines (NURBS) directly?
A. Caustic's native intersectable is a triangle, but NURBS can be tessellated into triangles to the level of detail required. If native rendering is required, then the NURBS surface can be bounded by triangle shells, and the final intersection point computed in a shader.
Q. Can I run CausticGL and regular OpenGL side-by-side in the same application without conflict?
A. The CausticGL interface is exported from a DLL / Framework / library that Caustic provides, and will not interfere with the operating system or vendor supplied OpenGL implementation.
Additionally, CausticGL has an optional header that can be included, so all of the CausticGL functions and entry points to be called with the prefix "rgl" instead of the conventional "gl", allowing the same code file to use both interfaces simultaneously.
Q. How programmable is CausticRT?
A. CausticRT offers a fully programmable ray tracing pipeline. Any renderer or visual effect that uses raytracing can be implemented on top of CausticRT.
Q. How close is CausticGL to OpenGL?
A. CausticGL extends the OpenGL ES 2.0 API in 3 significant ways:
1) Primitive Objects implement a bare-bones "Retain Mode" that allows rays to access any part of the scene, rather than streaming the geometry through the pipeline, as OpenGL does.
2) Frame Shaders are a new kind of shader that executes once for each pixel or element in the destination frame buffer. These shaders have the ability to cast rays into the scene.
3) Ray Shaders are a new kind of shader that execute for each ray that intersects the scene geometry. These shaders have the ability to contribute color back to the frame buffer, or to emit more secondary rays.
Q. What acceleration structures, geometry, and scene organization does CausticRT support?
A. CausticRT uses triangles as its native primitive, and the acceleration structure is built internally from the triangles that are submitted.
Q. Shading alone is very computationally expensive. If the CausticOne card doesn't shade, then how can it possibly gain the performance you claim?
A. We achieve our performance gains by scheduling the shading work that needs to be done in a way that makes optimal use of the computer architecture doing the shading (i.e., CPU or GPU).