Game Development Community

What's the rendering pipeline like.

by Joshua "The Power Nap" Taylor · in Torque Game Engine · 06/13/2001 (8:34 am) · 10 replies

I'm interested in unrealistic rendering. I've seen a few games, mostly on the dreamcast, that use this technique. Jet city Radio, or something, was one of the major titles that employed this, allthough alot of the Sonic games I saw also used this too. I was wondering what the rendering architecture was like on the v12, and if something like that would integrate easily. I don't know any algorythims that are used for unrealistic rendering, but I think some that I developed would work. This would require another data member, possibly two, at the vertex level.

Whaddayouthink?

#1
06/14/2001 (12:30 am)
AFAIK that won't be possible since the actual rendering is done by OpenGL/D3D/etc. If unrealistic rendering (whatever it is) is supported by the API, chances are you can modify V12's display code to take advantage of it even if it currently doesn't.

-Ben
#2
06/14/2001 (3:01 am)
There are quite a lot of NPR examples using OpenGL or D3D in the past few years. the latest one is using vertexshader, source code avaiable from msdn.microsoft.com
#3
06/14/2001 (8:26 am)
Pretty much what I cooked up was...

A routine would check a triangle's edge neighbors (Lack of visuals here, so try to bear with me) with respect to the camera's 2d drawspace. Any neighbor who shares an edge with that triangle, and who's third point is back in the x/y range of the triangle will have that edge drawn.

This also requires some sort of organization of the triangles for faster searches, but that's another story.

I could see using a vertex shader, but wouldn't that diffuse the line over the whole triangle? Or can that be fixed with Dx8's vertex modeling language?
#4
06/14/2001 (5:08 pm)
If you want to build a silhouette, it's easy. Build a winged-edge list, and walk the triangles in your object, checking it's orientation. If one triangle is facing the viewer, and it's neighbor isn't, the edge between them is part of the silhouette.

Once you've built your silhouette, you can draw it as a line list or something.
#5
06/15/2001 (8:19 am)
Sounds like what I thought up, alot like it.

I'd just like to know what a winged-edge list is?
#6
06/15/2001 (5:27 pm)
There was an article in game developer magazine a while ago about this exact thing, because I remember reading it. They used OpenGL to do it and even provided example code. The article should be in the archives at http://www.gamasutra.com. Not sure about the name of the article, but the point of it was to illustrate how to make your models look more like cartoons, so if you did a search on cartoons, you might find it :)
#7
06/15/2001 (6:03 pm)
if your talking about doing toon shading there are ways to fudge it without modifying the code.
Ive seen people make models for quake3 using a few effects to give the same effect as toon shading.
have a look around on www.polycount.com for the article
#8
06/16/2001 (12:25 pm)
What I want is a silhouette, it's a line along the edges (from the viewers perspective). I do apreciate the responces, and I will have my artist look at the toon shading articles.
I pretty much have figured out on my own how to do this. What's odd is that what I came up with is what alot of NPR uses. All I really need it a good data setup so I can compare triangles against their neighbors.
#9
06/18/2001 (7:41 am)
Joshua,

Actually, I use a much simpler technique, though it may not work for your purposes. I played with shilhouettes with my landscapes, and instead of triangle sorting, I set the last two mip-map levels to black (depending on your texture size, you might just use the last level).

The reason this works is because textures viewed nearly edge-on will use the upper mip-maps. Setting the last two to black (or just darkened versions of the texture) causes shillouette effects. It works great, and only requires that you tessellate the object to a certain degree (super-low polycount won't work).

--Bryan
#10
06/20/2001 (10:15 am)
Good idea Bryan,

But I don't know the polycount of the models for our charicters. What you suggested might not work. If we decide to use it in our landscapes I will definately give your solution a try. What I would like to know, is it easy to integrate a winged edge list into a mesh? Or possible wrap it around it? I would like to disturb as little as possible, to keep debugging down.