I just created a volume rendering implementation using OGRE, it already looks quite nice. The object shown is a partially alpha transparent RGBA 32x32x32 3d texture created with reaction-diffusion procedural texture generation.
The fish is there to check if the orientation matches and behaves like a normal mesh. Non-transparant meshes can even move through it.
Last edited by :wumpus: on Fri Jan 07, 2005 1:32 pm, edited 1 time in total.
Looks amazing. I was thinking in trying to implement this some day, but my recently busy life didn't allowed me to try :-/
Does it require some kind of fragment program? If not, it would be great for me (GF4MX )
It currently uses the brute force approach (orient object, a set of perpendicular slices, to camera, then apply inverse transformation to texture coordinates). Without any kind of vertex of pixel shader.
It does need 3d texture support on your card though.
Looks nice! I'm currently experimenting with isosurfaces, and I actually thought about borrowing your dyntex reactor and 3d'ize it to get some volume data, but looks like you've already done that. Would you like to share the 3d version?
:wumpus: wrote:No problem; the 3D implemementation works outside of OGRE though (it's a computer science project), if you pm me your mail addy I'll send it.
Please check your PMs.
:wumpus: wrote:I'm not sure what to do with my VolumeRenderable yet, use it in an OGRE demo, provide it as seperate add-on, etc.
A demo would be cool, I would like to see it in action.
Hehe.. I think this demo is becoming quite psychedelic (yep, you're not drunk, you're really seeing an ogre head inside a volumetric julia/mandelbrot set, with dark grey floating quads around it)
They seem to have good volumetrics rendering too. It apears they use both texture slices and impostor techniques, using splitted imposters it's also possible to avoid that intersection effect of the layers and an object inside. More in this big dissertation paper by Mark Harris:
Thanks for the interesting links although I'll probably stick with this (relatively) fast and simple implementation without preprocessing, shaders and heavy math.
00:59:40: RenderSystem capabilities
00:59:40: -------------------------
00:59:40: * Hardware generation of mipmaps: yes
00:59:40: * Texture blending: yes
00:59:40: * Anisotropic texture filtering: yes
00:59:40: * Dot product texture operation: yes
00:59:40: * Cube mapping: yes
00:59:40: * Hardware stencil buffer: yes
00:59:40: - Stencil depth: 8
00:59:40: - Two sided stencil support: no
00:59:40: - Wrap stencil values: yes
00:59:40: * Hardware vertex / index buffers: yes
00:59:40: * Vertex programs: no
00:59:40: * Fragment programs: no
00:59:40: * Texture Compression: yes
00:59:40: - DXT: yes
00:59:40: - VTC: no
00:59:40: * Scissor Rectangle: yes
00:59:40: * Hardware Occlusion Query: no
00:59:40: * User clip planes: no
00:59:40: * VET_UBYTE4 vertex element type: no
00:59:40: * Infinite far plane projection: no
00:59:40: * Hardware render-to-texture: yes
00:59:40: * Floating point textures: no
00:59:40: * Non-power-of-two textures: yes
Well, that's in DX. With OPENGL I just get a silent crash (and a completely different rendersystem capability, which is rather amusing for me, but that's not related to this demo). I have a GF4GO! 420 32MB with 56.72 drivers. I am not sure wheter is this thing supposed to run on this hardware or not, just posting this away.
Last edited by AssiDragon on Thu Feb 03, 2005 1:13 am, edited 1 time in total.
Hope is the first step on the road to disappointment.
3d textures aren't supported on gf2 hardware (hence the d3d call to make a volume tex fails), although I agree the error messages could be more clear about that.