Wednesday, September 17, 2014
Another Dr Who Themed Shader Experiment
Here's another ShaderToy, this time based off of the time coordinates as seen in Doctor Who (2005) S7E13 - "The Name of the Doctor". While the picture does justice to the line drawing algorithm I created for the task (I was offline at the time), to really appreciate it you need to see it moving. This one maintains a constant framerate on my Nexus5, so should work pretty well on WebGL devices with at least that much power.
Wednesday, September 10, 2014
Shadertoy's Dalek was Lonely
So I decided I'd create this shader to keep him company. Then a nice chap called Andre told me I could use his awesome sound shader (sound shaders a black magic to me, which makes Andre's accomplishment all the more impressive) as background music. Took me about 5 hours of effort, which included "figuring out how this raymarching biz works". The lighting is a bit off but I figure light is supposed to be funny in the time vortex. Also I'm not aware of a way to do ambient occlusion in a raymarching fragment shader.
Friday, January 17, 2014
Starting to Look Impressive - Crytek Sponza
You're not really showing off your real-time rendering code unless you're showing the Crytek Sponza. Sadly no GI... yet.
I've added *basic* LOD support, and added the all important colour bricks. Lighting bricks are the next brick in line. There are still some odd ray errors, and the colour does odd things when it's really thin (which at the moment, is always). Here's the commit.
I've added *basic* LOD support, and added the all important colour bricks. Lighting bricks are the next brick in line. There are still some odd ray errors, and the colour does odd things when it's really thin (which at the moment, is always). Here's the commit.
Labels:
BSD License,
C99,
github,
Linux,
OpenGL,
Sparse Voxel Octtree,
Sponza,
win32
Monday, January 13, 2014
Same Screenshot, Less Glitches, Bonus Numbers
This camera location was very carefully selected for it's absence of graphical errors. An error that is believed to be both a ray error and an allocation error is visible if the camera moves a couple of centimetres to the right, and moving any further away moves into a higher LOD level — mip mapping isn't implemented yet, so it disappears. On the bright side, it disappears! No more garbage where there should be an empty mip-level.
Here in Australia it's summer time, which is a *bad* time for GPU computing if one does not possess air-conditioning. As the result of an incident, the program now uses the very nice NVLM on Nvidia cards, and the not quite as nice ADL on AMD cards to query the GPU temperature. The windows version of the NVLM code has not been tested - it has however been proven correct. If your drivers are new-ish, it should just work, or not, and the "or not" has been tested and does behave nicely. The AMD ADL stuff *should* work... at least I've tested it not working, and it not works as intended.
The OpenCL renderer has been removed pending me getting my hands on something with more modern OpenCL support. It lives on in the repo history. The Stargate model comes from here.
Here in Australia it's summer time, which is a *bad* time for GPU computing if one does not possess air-conditioning. As the result of an incident, the program now uses the very nice NVLM on Nvidia cards, and the not quite as nice ADL on AMD cards to query the GPU temperature. The windows version of the NVLM code has not been tested - it has however been proven correct. If your drivers are new-ish, it should just work, or not, and the "or not" has been tested and does behave nicely. The AMD ADL stuff *should* work... at least I've tested it not working, and it not works as intended.
The OpenCL renderer has been removed pending me getting my hands on something with more modern OpenCL support. It lives on in the repo history. The Stargate model comes from here.
Labels:
BSD License,
C99,
github,
OpenGL,
real-time,
Sparse Voxel Octtree
Thursday, December 12, 2013
OpenCL up to Speed, and 4K Voxelisation Has Been Attained
As you can see there are still plenty of graphical errors, but I have finally cracked that magical 1024 voxel dimension limits I have had for all this time. 2k isn't that impressive these days, so I jumped straight to 4k, which is needed to see pretty much all of the little patterns on the inside and outside edges of the Stargate. Amusingly, that 16 fold increase in detail didn't noticeably impact performance at all, at least on the rendering side of things (brick creation on the other hand...). Also the OpenCL renderer has been brought up to speed, and currently works at least as well as the OpenGL renderer. Sadly the same can not be for OpenCL's performance, which is really quite poor, at least on my GTX680 it appears to be roughly a quarter of the frame rate of the GLSL version. The Stargate model comes from here. Source code for the current progress as always is available from GitHub.
Thursday, December 5, 2013
Success! We Have Voxels!
Here's the code. Finally, the current implementation matches the original in terms of capability. It also significantly exceeds the original in terms of performance, and contains a version of the LRU allocation scheme (even if in its current state it isn't doing anything). This is almost a complete implementation of Cyril Crassins GigaVoxel method, albeit missing the spatial mipmapping, and about a thousand visual tweaks, most of which depend on the mipmapping. I can almost taste the Global Illumination.
Labels:
BSD License,
C99,
github,
OpenGL,
real-time,
Sparse Voxel Octtree
Tuesday, December 3, 2013
Underwhelming Screenshot 5: Gelatinous Cube Eats Bunny
Significantly more whelm than previous entries, still lacking that whole voxel thing I set out to accomplish. As far as I can tell, the only thing that's not working is for some reason the voxel rendering shader can't get brick id's, which is curious as the brick creation shader is most certainly writing to the brick texture (I checked). The really amazing part about this, is how fast it runs. This is *very* real-time. This Octtree is 7 levels deep, and it took 7 frames to generate. Frame rate appeared to stay well above 40fps. It's quite mesmerising watching a bunny form out of blocky nothingness. Even though it doesn't completely work, I'm still quite chuffed, as building the Octtree and associated 3D texture took tens of seconds in the old version, where as this does it's job tens of times per second. Source for the adventurous.
Labels:
BSD License,
C99,
github,
GLSL,
Linux,
Open Source,
OpenGL,
real-time,
Sparse Voxel Octtree,
win32
Subscribe to:
Posts (Atom)






