4 ms·
I like the article, but it seems to be missing a pretty major component: how do I cast the ray? It seems like the hardware won't have the geometry available s
by prewett 11y ago
I like the article, but it seems to be missing a pretty major component: how do I cast the ray? It seems like the hardware won't have the geometry available so I can't do it on hardware. (What if this is the first pixel rendered? and even if it does store up all the geometry, OpenGL shaders don't have a ray casting call) And if I do it in software, I can't use a vertex shader (unless I duplicate what it is doing, which kind of defeats the purpose).
- echeese 11y agoYes, it seems like this article is very specific to PowerVR.
- alexvoica 11y agoYou can also run the code I've given above on a very fast CPU; however, the PowerVR Wizard GPU has built-in structures designed to accelerate ray tracing functionality in addition to the traditional rasterized architecture, giving you real-time ray tracing + rasterzied graphics + compute in a single GPU. This article on AnandTech presents the architecture in more detail: http://www.anandtech.com/show/7870/imagination-announces-powervr-wizard-gpu-family-rogue-learns-ray-tracing http://www.anandtech.com/show/7870/imagination-announces-pow...
- s_tec 11y agoThis is a marketing piece for their new GPU, which has ray casting built into the silicon. It's not clear how to access this new hardware (some OpenGL extension?), but they do mention that their chip gives shaders the ability to cast rays.
- alexvoica 11y agoYes, we are using ray tracing extensions implemented for OpenGL. You can find the sample code here http://cdn.imgtec.com/OpenRLSDK/OpenRL-Hybrid-Example.zip http://cdn.imgtec.com/OpenRLSDK/OpenRL-Hybrid-Example.zip
- Arelius 11y agoAny chance Imagination is considering a Workstation-level product? I understand that mobile is your money maker, but if the hardware is as fast as it sounds, there are some roles that might be really nice to be able to offload onto this sort of hardware. And how well is the hardware currently handling highly divergent rays? Such as those used in GI or reflections?
- Arelius 11y agoLooks like there are some references to the "Caustic Series2" boards. But these look discontinued. It's hard to invest in the technology if it's unsure that there will be continued hardware support. I mean after all, it doesn't take too many generations of hardware for raw Nvidia Titan power to make up for the differences.
- alexvoica 11y agoThe PowerVR Wizard architecture scales from mobile to desktop/console. We will be bringing out dev kits in the near future that will deliver very (very) high performance.
- Arelius 11y agoAwesome, I'm very (very) interested.
- alejohausner 11y agoThe article mentions a "distance to occluder buffer". I suspect this is like a shadow buffer, which normally is obtained by rendering the scene using the point light as the eye point, and saving the resulting depth buffer. Perhaps they reverse the depth test, to store, at each pixel in the shadow buffer, the distance to the object furthest from the light source. This would then be distance to the occluder closest to the ground plane. But I don't see evidence of blockiness that such a pixelized distance map would produce. It's hard to tell what they're doing. One thing I'm sure they're not doing is real ray casting from each hit point to the light source. I don't see how they could test each such ray against the whole scene, and do that using the GPU. While I'm on the topic, the soft shadows they compute are not exact, since they assume the light source is a circle, and their analytic formula for the penumbra angle is an approximation. Shadows would look different for linear lights like fluorescent tubes. But hey, if you're in the middle of a game, dodging enemies, you won't stop to criticize the slightly incorrect shadows. In an architectural rendering, the difference might be noticeable.
- jdecell 11y agoThe distance to occluder buffer is a screen space "inverse shadow map" if you will. For each screen space pixel it stores the distance from the surface under that pixel to closest occluder, should one exist. We are in fact casting a real ray from each non-trivially shadowed pixel towards the light source. We're using the PowerVR Wizard GPU's hardware ray tracing unit to accelerate process. Pixels who's surface is back-facing WRT the light (i.e. N dot L < 0) we know are shadowed so there's no need to cast any rays.
- alexvoica 11y agoYou essentially implement ray tracing capabilities inside the G buffer. Have a look at this presentation from GDC for more details and let me know if you have further questions. http://www.gdcvault.com/play/1020688/Practical-Techniques-for-Ray-Tracing http://www.gdcvault.com/play/1020688/Practical-Techniques-fo...