Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Entheogen
Aug 30, 2004

by Fragmaster
I am trying to do some volume rendering using OpenGL and Java.

here are some preliminary results (there are 6 million triangles in each):





The frame rate is not that great. I use display lists right now. The volume data itself doesn't change. If anyone can suggest a better method, please do.

Adbot
ADBOT LOVES YOU

Entheogen
Aug 30, 2004

by Fragmaster

SuperFurryAnimal posted:

I've been developing techniques for the realtime procedural animation of assorted creatures for my Ph.D. The idea is that all animation is driven by the creature's embodiment in the environment, taking a lot of inspiration from AI, robotics and ethology.

Most of the work has concentrated on Spiders, although I'm currently extending the simulation to cover creatures of similar morphology (body close to ground, legs in parallel), such as insects and lizards.

This is really cool. Any chance of you publishing your thesis here after you are done?

Sterra
Jul 7, 2002

by Peatpot


http://spamstopper55.appspot.com/

I built a spam filtering tool mostly with the app engine. (It can't deal with email so that is separate.)

The basic idea is that with this you sign up with a name and the email address you want the email to go to (because it goes through the app engine I just automatically fill in the gmail address, but you can use others).

Then you add ranges of numbers which become email addresses

So for example with a name of testing and adding 5 and 10 for the range

you get

testing-5@functionalforums.com:
testing-6@functionalforums.com:
testing-7@functionalforums.com:
testing-8@functionalforums.com:
testing-9@functionalforums.com:
testing-10@functionalforums.com:
testing-11@functionalforums.com:

(the domain name is simply one I happened to have)

And then you can recieve on those email addresses. If you start getting spam for one of those addresses you can then delete that email address and it goes away

Screeb
Dec 28, 2004

status: jiggled

Entheogen posted:

I am trying to do some volume rendering using OpenGL and Java.

here are some preliminary results (there are 6 million triangles in each):





The frame rate is not that great. I use display lists right now. The volume data itself doesn't change. If anyone can suggest a better method, please do.

Vertex Buffer Objects (VBO's) are what you want. WAY better than display lists.

Adhemar
Jan 21, 2004

Kellner, da ist ein scheussliches Biest in meiner Suppe.

Entheogen posted:

I am trying to do some volume rendering using OpenGL and Java.

here are some preliminary results (there are 6 million triangles in each):





The frame rate is not that great. I use display lists right now. The volume data itself doesn't change. If anyone can suggest a better method, please do.

It's volume rendering but you're rendering millions of triangles? Do explain.

MORE CURLY FRIES
Apr 8, 2004

Sterra posted:



http://spamstopper55.appspot.com/

I built a spam filtering tool mostly with the app engine. (It can't deal with email so that is separate.)

The basic idea is that with this you sign up with a name and the email address you want the email to go to (because it goes through the app engine I just automatically fill in the gmail address, but you can use others).

Then you add ranges of numbers which become email addresses

So for example with a name of testing and adding 5 and 10 for the range

you get

testing-5@functionalforums.com:
testing-6@functionalforums.com:
testing-7@functionalforums.com:
testing-8@functionalforums.com:
testing-9@functionalforums.com:
testing-10@functionalforums.com:
testing-11@functionalforums.com:

(the domain name is simply one I happened to have)

And then you can recieve on those email addresses. If you start getting spam for one of those addresses you can then delete that email address and it goes away

Did you ever get around to making that blog system of yours look like a normal website?

Rooster Brooster
Mar 30, 2001

Maybe it doesn't really matter anymore.


It's a task list. I wanted something that would respond to a global hotkey, and allow me to immediately add or remove a task without touching the mouse. I also wanted an excuse to start learning WPF.

Sterra
Jul 7, 2002

by Peatpot

MORE CURLY FRIES posted:

Did you ever get around to making that blog system of yours look like a normal website?
Actually yeah (mostly). Though it still has some issues with the robustness of the data storage that I haven't gotten around to fixing for various reasons (I basically need to break it up more so the failures aren't so critical and are easier to fix. I've done part, but not all of that).

If anyone wants the code for that I wouldn't mind making it open source. It does some pretty cool things with the architecture.

MORE CURLY FRIES
Apr 8, 2004

Sterra posted:

Actually yeah (mostly). Though it still has some issues with the robustness of the data storage that I haven't gotten around to fixing for various reasons (I basically need to break it up more so the failures aren't so critical and are easier to fix. I've done part, but not all of that).

If anyone wants the code for that I wouldn't mind making it open source. It does some pretty cool things with the architecture.

I only asked because the thread dropped and your hosting seems to be empty. I was hoping you'd fixed rather than ditching the whole idea at possibly the easiest bit to do.

Entheogen
Aug 30, 2004

by Fragmaster

Adhemar posted:

It's volume rendering but you're rendering millions of triangles? Do explain.

cheap trick, since i didn't want to do ray casting algorithms or volume finding ones. I just draw cubes that connect each data point with its neighbors, and then use GL_SMOOTH to interpolate between vertices on same triangle. What i do exactly, is draw a triangle fan for each point that covers 3 faces of a cube.

It actually worked out pretty well for rendering actual data i was given by my boss so far. What i am working on next is making a function that takes data point and produces new alpha point in vertex shader. So far I have implemented a simple linear one and Gaussian distribution one.

quote:

Vertex Buffer Objects (VBO's) are what you want. WAY better than display lists.

I thought about that, but i fail to see how it would be faster than display list? Both are on video card and as far as i understand VBOs are like vertex arrays but they reside on actual video memory instead of normal RAM. I don't really need to change any visual information on a fly. Would they really be faster for rendering static stuff, than display lists?

Thug Bonnet
Sep 22, 2004

anime tits ftw

Entheogen posted:

I don't really need to change any visual information on a fly. Would they really be faster for rendering static stuff, than display lists?

Yeah, depending on the card they can be significantly faster. I'm not sure what you're writing in but I have a bunch of VBO C code I can give you if you're interested.

Entheogen
Aug 30, 2004

by Fragmaster

Thug Bonnet posted:

Yeah, depending on the card they can be significantly faster. I'm not sure what you're writing in but I have a bunch of VBO C code I can give you if you're interested.

I do not understand. Display list is compiled list of commands, VBOs on the other hand still have to be rendered using some primitive? How could it be faster?

I am using Java, but it is pretty close to the way OpenGL is used in C, so your example code could be very useful for me.

Sterra
Jul 7, 2002

by Peatpot

MORE CURLY FRIES posted:

I only asked because the thread dropped and your hosting seems to be empty. I was hoping you'd fixed rather than ditching the whole idea at possibly the easiest bit to do.
Eh, I have no problem fixing it to be more reliable if you are interested in using it. I ditched it mainly because no one was interested in it and my hands started hurting from my own posts.

heeen
May 14, 2005

CAT NEVER STOPS




A little experiment I'm building, app engine based.

Screeb
Dec 28, 2004

status: jiggled

Entheogen posted:

I do not understand. Display list is compiled list of commands, VBOs on the other hand still have to be rendered using some primitive? How could it be faster?

I am using Java, but it is pretty close to the way OpenGL is used in C, so your example code could be very useful for me.

Read this: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html

However, after looking at your screenshots again, I see that you get much better FPS when further away from the volume - i.e. when it only takes up a portion of the screen. That means that the bottleneck is actually the fillrate, which makes sense given you're rendering millions of semi-transparent triangles. In that case, I don't know what to suggest to be honest.

What kind of performance do you get rendering it as a point cloud instead?

beuges
Jul 4, 2005
fluffy bunny butterfly broomstick
I can't take a screenshot of the latest thing I'm working on because it has no UI whatsoever - not even a tray icon (although I might put one in later if I decide to add a config UI).

I have a Creative Audigy 2 NX sound card which comes with a remote control. Unfortunately for me, the remote only seems to really work with Creative's lovely media center, and I want it to work with Windows Media Center cos I've got it hooked up to my HTPC in the lounge. Theoretically Creative provides a way to do this but after reading a few guides online I still haven't managed to get it to work at all.

Enter RemoteHack. I loaded up Spy++ and logged all the windows messages that the remote control helper app received whenever a remote button was pressed. RemoteHack looks for the remote control helper process and attaches a message hook into it - I then catch the message that tells the app that a button was pressed, and simulate a keypress instead. Media Center picks it up and reacts to it as if I had pressed one of the multimedia keys on the keyboard.

At least that's the theory... i finished the code at 1am this morning and didn't bother testing it yet.

It does a lookup for the button codes in the registry so I can remap the simulated keypresses if i want. Plus I put in a mechanism where it grabs the window class of the foreground window and looks that up in the registry too, so I can override buttons based on what app is currently focused.

Once I get it working 100% i'll put a link up somewhere.

StickGuy
Dec 9, 2000

We are on an expedicion. Find the moon is our mission.

Entheogen posted:

cheap trick, since i didn't want to do ray casting algorithms or volume finding ones. I just draw cubes that connect each data point with its neighbors, and then use GL_SMOOTH to interpolate between vertices on same triangle. What i do exactly, is draw a triangle fan for each point that covers 3 faces of a cube.
My understanding is that volume ray casting is considered to be the way to go these days. Still, even if you decided to do it the "easy" way, why not just use view oriented quads that slice through the volume rather than millions of triangles?

Entheogen
Aug 30, 2004

by Fragmaster

Screeb posted:

Read this: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html

However, after looking at your screenshots again, I see that you get much better FPS when further away from the volume - i.e. when it only takes up a portion of the screen. That means that the bottleneck is actually the fillrate, which makes sense given you're rendering millions of semi-transparent triangles. In that case, I don't know what to suggest to be honest.

What kind of performance do you get rendering it as a point cloud instead?

It is much higher, but the visual quality is much suckier, because there are a lot of empty spaces between points that don't get filled. Thanks for the link!

quote:

My understanding is that volume ray casting is considered to be the way to go these days. Still, even if you decided to do it the "easy" way, why not just use view oriented quads that slice through the volume rather than millions of triangles?

You mean i can sort of calculate the "voxels" i need to display to approximate "real" view then render it using quads?

I have seen some real time ray-casting demos and the performance didn't seem that much higher than what I have right now. Also ray-casting is usually for rendering solids and semi-transperent layers that cover them, as far as I understand. With this project its more that I need to look "inside" the volume at all levels and be able to isolate different features inside.

The linear and gaussian function in vertex shader has worked fine to that end so far.

I believe I can use VBO or at least vertex arrays to cut on the amount of data I am sending to the video card because right now it is 6 times bigger than it needs to be. Perhaps the frame rate will improve as well when I do not repeat glVeretx needlessly.

Entheogen fucked around with this message at 13:25 on Jun 30, 2008

StickGuy
Dec 9, 2000

We are on an expedicion. Find the moon is our mission.

Entheogen posted:

You mean i can sort of calculate the "voxels" i need to display to approximate "real" view then render it using quads?

I have seen some real time ray-casting demos and the performance didn't seem that much higher than what I have right now. Also ray-casting is usually for rendering solids and semi-transperent layers that cover them, as far as I understand. With this project its more that I need to look "inside" the volume at all levels and be able to isolate different features inside.
Take a look at voreen for an open source ray-casting based volume rendering engine. I haven't played around with it much, to be honest, and it does require Qt, but it just works.

By drawing a number of little cubes, you are effectively drawing 3 sets of volume oriented planes through your domain (ones perpendicular to the volume's X, Y and Z axes). However, you're essentially drawing 3 times as many planes as you need. If you, instead, figure out how big the volume in screen space is, you can draw a stack of quads that are perpendicular to the viewing direction and intersect your volume. Using hardware trilinear interpolation (assuming your volume is a 3D texture), you'll get a decent result using this approach.

LOLLERZ
Dec 9, 2003
ASK ME ABOUT SPAMMING THE REPORT FORUM TO PROTECT ~MY WIFE'S~ OKCUPID PERSONALS ANALYSIS SA-MART THREAD. DO IT. ALL THE TIME. CONSTANTLY. IF SHE DOESN'T HAVE THE THREAD, SHE'LL WANT TO TALK TO ME!
I posted this over in the AIR megathread, but it's about as mega as the Lisp megathread was.

collapse. It's a Samegame/Clickomania/Falldown/Chainshot clone game.



I'm going to add transition animations, sound, and figure out more about the install process next. I should note, it only took me 5 hours to write this, so I think AIR and I may become friends.

Entheogen
Aug 30, 2004

by Fragmaster
http://giga2.cs.ohiou.edu/~neiman/anim1.gif

Same program as I posted the SN's of above, but this time I am walking through the data set using gaussian distribution function done in vertex shader.

Thug Bonnet
Sep 22, 2004

anime tits ftw

Entheogen posted:

I do not understand. Display list is compiled list of commands, VBOs on the other hand still have to be rendered using some primitive? How could it be faster?

I am using Java, but it is pretty close to the way OpenGL is used in C, so your example code could be very useful for me.

I'm pretty sure the display lists are stored outside the GPU's memory whereas VBOs/PBOs are stored in GPU memory. Another nice thing about VBOs/PBOs is that you can read from and re-write to them whenever you'd like (incurring while a performance hit of course).

PM me and I'll send the code (there's more than I should probably dump in the thread)

Entheogen
Aug 30, 2004

by Fragmaster

Thug Bonnet posted:

I'm pretty sure the display lists are stored outside the GPU's memory whereas VBOs/PBOs are stored in GPU memory. Another nice thing about VBOs/PBOs is that you can read from and re-write to them whenever you'd like (incurring while a performance hit of course).

PM me and I'll send the code (there's more than I should probably dump in the thread)

i dont have platinum. you can email me though. green.entheogen@gmail.com thanks in advance.

Adhemar
Jan 21, 2004

Kellner, da ist ein scheussliches Biest in meiner Suppe.

Thug Bonnet posted:

I'm pretty sure the display lists are stored outside the GPU's memory whereas VBOs/PBOs are stored in GPU memory. Another nice thing about VBOs/PBOs is that you can read from and re-write to them whenever you'd like (incurring while a performance hit of course).

PM me and I'll send the code (there's more than I should probably dump in the thread)

Actually, pretty much all modern OpenGL implementations will store display lists in video memory nowadays. The difference is that the spec does not require this (display lists have been in the spec for far longer than vertex buffers). It makes sense; the implementation should do whatever it can to exploit the fact that the display list is static and since they need to support vertex buffers nowadays anyway, it's a logical step. So if your geometry is static, you can stick with display lists.
That said, ray casting is fun, so you should really consider it, just google for some papers/tutorials. You're already doing shader programming anyway, right? Shouldn't be that big of a learning curve.

Zakalwe
May 12, 2002

Wanted For:
  • Terrorism
  • Kidnapping
  • Poor Taste
  • Unlawful Carnal Gopher Knowledge

Adhemar posted:

That said, ray casting is fun, so you should really consider it, just google for some papers/tutorials. You're already doing shader programming anyway, right? Shouldn't be that big of a learning curve.

My research is on real-time ray-tracing.

Ray tracing/casting is computationally expensive. With M rays and N triangles, you get M*N intersection tests. Let's say you're rendering a 1024x1024 image with 1 ray cast per pixel and 6 million triangles. That's 1,048,576,000,000 intersection tests per frame.

To speed this up you need to use an ADS (acceleration data structure) such as the KD-Tree or BVH. This reduces the number of intersections per frame to M*log(N) ~23592960 tests (that's 0.00225% of the original!)

OK, now there's a few problems though. Your data pretty much needs to be static. The tree build process is obviously Nlog(N). You don't want to do that every frame (although some people do for dynamic scenes). If your data changes you need to rebuild all or part of your ADS.

Traversing a tree data structure on the GPU is painful due to the inherent problem wih stacks on GPUs. Now, some people build shallow trees to overcome this, but that means tree quality suffers greatly. You can work around this using a rope-tree (Prof. Slusalleks crew in Saarland published on this about 2 years ago), but it's still pretty messy.

There's other non-tree based ADS methods like grids that are better suited to GPUs, but as they don't adapt to the underlying geometry, they have much lower performance.

The OP's app uses semi-transparent triangles, which means another ray shot per semi transparent triangle intersected. Also, to get anti-aliasing he'll need to shoot more than one ray per pixel or do some adaptive sub-sampling. Anyway, that's a least say another 10% rays.

Funnily enough may people in the RTRT field use GPU rasterisation for all primary rays. Colour each triangle a unique colour. Render the scene. Use the colour of each pixel as an index to the proper triangle shader (RTRT software shader - not GPU). Use the value from the depth buffer as the distance along the ray intersection occurs. Spawn secondary rays from that point.


My advice? Stick with the rasterisation for this application at least.

pseudopresence
Mar 3, 2005

I want to get online...
I need a computer!

Zakalwe posted:

Ray tracing/casting is computationally expensive. With M rays and N triangles, you get M*N intersection tests. Let's say you're rendering a 1024x1024 image with 1 ray cast per pixel and 6 million triangles. That's 1,048,576,000,000 intersection tests per frame.

...

My advice? Stick with the rasterisation for this application at least.

Wasn't the idea of the raycasting suggestion to skip the triangles altogether though, and just march through the volume data?

StickGuy
Dec 9, 2000

We are on an expedicion. Find the moon is our mission.

Zakalwe posted:

My advice? Stick with the rasterisation for this application at least.
Did you even read what he's been posting? He's doing volume rendering. GPU based ray-casting is a very common technique to achieve this in real time. I even posted a link to an open source application that does this. Thanks for your input.

Zakalwe
May 12, 2002

Wanted For:
  • Terrorism
  • Kidnapping
  • Poor Taste
  • Unlawful Carnal Gopher Knowledge
HAHA whoops my bad. Yes, GPU ray casting for volume rendering is a different kettle of fish and will work in this instance.

heeen
May 14, 2005

CAT NEVER STOPS
I'm trying to find the quad that covers a given triangle on the screen, as in the minimum and maximum screen coordinates of all three triangle points.
I'm calculating the normalized device coordinates of my points and take the minimum and maximum accordingly, however I have problems with points that lie behind the camera / the near plane.
Since they get a negative .w value, their x and y coordinates get flipped and somehow I can't seem to get it right.
However simply saying that their x- y- coordinates lie on the edge if their w component is negative has so far not proven successful.

code:
for(int i=0; i<3; i++) //original triangle
	{
		ndc_points[i]=(gl_ModelViewProjectionMatrix*gl_PositionIn[i]);
	}
(...)
	vec3 vmin, vmax;
	
	vec3 temp[3];
	temp[0] = ndc_points[0].xyz / ndc_points[0].w;
	temp[1] = ndc_points[1].xyz / ndc_points[1].w;
	temp[2] = ndc_points[2].xyz / ndc_points[2].w;
	
	for(int i=0;i<3;i++)
	if(ndc_points[i].z<0)
	{
			temp[i].x=-sign(ndc_points[i].x);
			temp[i].y=-1; // clamp to bottom edge :( -sign(...) does not always work
			temp[i].z=-1;
	}
	vmin.x=min3(temp[0].x ,temp[1].x,temp[2].x);
	vmin.y=min3(temp[0].y ,temp[1].y,temp[2].y);
	vmin.z=min3(temp[0].z ,temp[1].z,temp[2].z);

	vmax.x=max3(temp[0].x ,temp[1].x,temp[2].x);
	vmax.y=max3(temp[0].y ,temp[1].y,temp[2].y);
	vmax.z=max3(temp[0].z ,temp[1].z,temp[2].z);

	quad[0].w=1;
	quad[1].w=1;
	quad[2].w=1;
	quad[3].w=1;
	
	quad[0].xyz=vec3(vmin.x,vmin.y, vmin.z);
	quad[2].xyz=vec3(vmax.x,vmin.y, vmin.z);
	quad[1].xyz=vec3(vmin.x,vmax.y, vmin.z);
	quad[3].xyz=vec3(vmax.x,vmax.y, vmin.z);

	//emit quad

I just now realize, I have to take the other points of the triangle into account, because they determine if the camera is above or below the triangle... If the camera is below the triangle, i have to clamp to the top edge, if it is above ,I have to clamp to the bottom edge... hmmm

kangaroo
Jul 3, 2007

more falafel please posted:

Just finished:
Online play for NBA Ballers: Chosen One


Side project:
SmokeAlarm: a client-server n-tier enterprise cigarette break notification platform

Today I added Zeroconf/Rendezvous/Bonjour support to SmokeAlarm, and found out that it's apparently impossible to make the .NET library ZeroconfNetServices work with the python pyzeroconf. I originally wrote the server in Python to make it as simple as possible, but I might end up rewriting it in C#, since I needed to write a C# app anyway to publish the Zeroconf service in a way that ZeroconfNetServices would apparently work with it.

Sorry I dont have plat so I'm responding to the thread. Check out Mono.ZeroConf,free ZeroConf .NET bindings and x-plat to boot:

http://www.mono-project.com/Mono.Zeroconf

ndrz
Oct 31, 2003

Don't have a picture because it's command line based and I'm not at work right now, but I wrote a program that queries our Autodesk (AutoCAD) licensing servers for current users of the various Autodesk programs every three minutes and records the results in a MSSQL database.

It then generates reports based on usage by user, location, product, etc. We have many licenses and they're used worldwide by various separate sub-companies of ours, so now we'll be able to bill each company yearly for the amount of licenses they actually use on a day to day basis instead of an educated guess.

I learned a lot doing it, I'm still in college and and am interning at this company. They pretty much tasked me with doing this and I learned Java / SQL connectivity and some other cool stuff.

I've also done some Visual Basic programs that interface with Microsoft Dynamics SL and the SQL database to allow users to attach files (like specification sheets for example) to inventory items and other things like that.

Pretty fun summer.

Entheogen
Aug 30, 2004

by Fragmaster
I followed your guy's advise and used VBO's. While I do not notice any rendering speed improvement, it did allow me to render more than with display lists, because i kept getting GL_OUT_OF_MEMORY exception with display lists when trying to render same amount of information with display list.

Here is a picture of some data set with linear vertex shader function:


and here is same data, same camera angle but with gaussian function:


It was surprisingly easy to get VBO's to work with Java OpenGL. I just made a version with vertex arrays first, made sure it worked and then made a couple of extra gl calls to put arrays into GPU memory.

Adhemar
Jan 21, 2004

Kellner, da ist ein scheussliches Biest in meiner Suppe.

Entheogen posted:

I followed your guy's advise and used VBO's. While I do not notice any rendering speed improvement, it did allow me to render more than with display lists, because i kept getting GL_OUT_OF_MEMORY exception with display lists when trying to render same amount of information with display list.

Here is a picture of some data set with linear vertex shader function:


and here is same data, same camera angle but with gaussian function:


It was surprisingly easy to get VBO's to work with Java OpenGL. I just made a version with vertex arrays first, made sure it worked and then made a couple of extra gl calls to put arrays into GPU memory.

What does this data represent and how have you verified it is being displayed correctly? Have you tried running your program on some verifiable test data (e.g. medical data), just to see if it looks correct? You seem to be using a very non-standard technique (did you come up with this yourself?), so I'd be interested in seeing how well it looks on data that's not just some bright colours.

Entheogen
Aug 30, 2004

by Fragmaster
Here is an animation of a walk through some actual data my boss gave me: http://giga2.cs.ohiou.edu/~neiman/wave.swf It is sort of low-res, but I will make a much nicer one soon.
EDIT: here it is: http://giga2.cs.ohiou.edu/~neiman/hi-def_wave.gif

He said it is solution to some partial differentiation equation that describes release of calcium or sodium in the cell. I am not quite sure what it actually is.

The data is visualized correctly. To generate the other screenshots, i just took an empty volume, filled it with random sized and random colored spheres, then did a few passes of averaging algorithm, that just takes each point and averages it together with neighbor. Then all of that is compiled into a VBO and what is rendered subsequently.

This is the source for gaussian filter implemented in vertex shader
code:
uniform float scale_factor; 
uniform float gauss_a; 
uniform float gauss_b; 
uniform float gauss_c; 
varying vec4 colorz; 
void main( void ) 
{ 
    gl_FrontColor = gl_Color;
    float e = 2.71828;
    float x = gl_FrontColor.w;
    float exponent = x - gauss_b; 
    exponent *= exponent;
    exponent /= -2 * ( gauss_c * gauss_c );
    gl_FrontColor.w = scale_factor * gauss_a * exp( exponent );
    colorz = gl_FrontColor; 
    gl_Position = ftransform();
}
I came up with this technique on my own, but it is pretty basic. The tricky part was getting it to run fast enough.

Entheogen fucked around with this message at 02:12 on Jul 5, 2008

Sterra
Jul 7, 2002

by Peatpot
http://sites.google.com/a/terracaines.com/terra/Home/zclack.jar


A small java application designed because my hand tends to hurt after clicking the mouse for a while.

Scaevolus
Apr 16, 2007

Sterra posted:

A small java application designed because my hand tends to hurt after clicking the mouse for a while.

Surely you're joking?

DLCinferno
Feb 22, 2003

Happy

Scaevolus posted:

Surely you're joking?
I'm sure it's bound to some keystrokes or something.


Right...? :(

Null Pointer
May 20, 2004

Oh no!
I've been working on a level editor for about a week.



Right now I only have sectors, extrusion and sector subdivision implemented, but later on it's going to support positive-space volumes, patches and path lofting.

slovach
Oct 6, 2005
Lennie Fuckin' Briscoe

Null Pointer posted:

I've been working on a level editor for about a week.



Right now I only have sectors, extrusion and sector subdivision implemented, but later on it's going to support positive-space volumes, patches and path lofting.

Is there a specific game it's targeting?

Adbot
ADBOT LOVES YOU

ATLbeer
Sep 26, 2004
Über nerd
This is the first time I've posted anything on this project but, it's finally at a point where I'm semi-OK with how it's looking and functioning (not that a screenshot needs to function but, I need it to)


The essence of the site is to aid in helping people putting together a custom built PC. The internals of the site (django based) has a highly abstracted model on how a computer fits together. Different types of interconnectors (AM2/LG755/PCI Express/etc) and understands how all the components pop together. Using this you can select one part and then wade through the other components knowing that they will all fit together properly.

I hope to have a full beta up and running by August. There's a lot of bits left but, I've just finished the 'core' functionality tonight.

I'm envious of all the ray-tracing and OpenGL stuff. I want to learn how to make pretty pictures.

Yes... this was also ironically developed on a Mac :v:

ATLbeer fucked around with this message at 06:13 on Jul 7, 2008

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply