tag:blogger.com,1999:blog-3862349614860735414.post4924540066489892652..comments2023-12-01T18:08:38.825+00:00Comments on John Whigham's Blog: Goodbye OctreesJohn Whighamhttp://www.blogger.com/profile/10862563515312224241noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-3862349614860735414.post-626552189988532662013-07-05T09:10:43.528+01:002013-07-05T09:10:43.528+01:00Performance wise, raycasting is certainly not the ...Performance wise, raycasting is certainly not the most efficient way to render such a data set with GPUs being heavily specialised for triangle rasterisation, but it's surprisingly good with a reasonable graphics card (I'm using Radeon HD 6800/6900's so not exactly cutting edge). Using the clipmaps instead of a tree structure reduces the number of volume texture samples required at each iteration along the ray to two or even just one if you don't want to blend between LOD levels.<br /><br />The biggest performance problem I have at the moment is uploading new brick data from main memory to the GPU. I've tried a couple of techniques but so far haven't found one that doesn't cause stalls in rendering when under load - TBH information on best practices for asynchronous uploading to GPU with DirectX seems a bit thin on the ground and PC GPU debugging tools for profiling the API & HW seem a bit...unstable...John Whighamhttps://www.blogger.com/profile/10862563515312224241noreply@blogger.comtag:blogger.com,1999:blog-3862349614860735414.post-44974825373760238302013-07-03T01:20:07.230+01:002013-07-03T01:20:07.230+01:00Even for an Earth sized planet, you need around 10...Even for an Earth sized planet, you need around 10^21 voxels - encoding each voxel as a byte, wolfram alpha claims that's about 200x the entire of human knowledge. Bravo!<br /><br />What sort of performance are you seeing when raytracing this sort of dataset? I've been tempted to try a ray-tracing solution, but the performance numbers have never looked particularly good...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3862349614860735414.post-53408220722427214912013-07-01T22:52:19.686+01:002013-07-01T22:52:19.686+01:00Why not having pyramids instead of rays? You don&#...Why not having pyramids instead of rays? You don't have to change anything except that, when you are dealing with a cube/octree & a point inside it on a ray, you paint the corresponding pixel with the cube's color & don't descend further if that ray's point has a view space z such that "sqrt(3) * e <= z * 2 / r" where e is the cube edges' size & r is the resolution of your viewport. (I assume a 90° view pyramid). Note that, as usual, you need no float, * or /. A sufficient condition is "e + (e >> 1) + (e >> 2) <= z << 1 >> log(r)".Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3862349614860735414.post-75509881501038018612013-06-25T16:13:49.936+01:002013-06-25T16:13:49.936+01:00I think that a planet that size would contain abou...I think that a planet that size would contain about 9.8782084e+17 voxels. But i guess you don't really care about all the voxels inside it...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3862349614860735414.post-38024042823839625952013-06-25T16:09:04.596+01:002013-06-25T16:09:04.596+01:00I'm guessing 4.7810528e+20 voxels.I'm guessing 4.7810528e+20 voxels.Anonymousnoreply@blogger.com