Game Engine vs GfX Card.
On the topic of First Person Shooters, there are a few questios I''d like answered:
What determines whether a polygon is rendered or not, the engine or the card the user has? Are objects not within the FOV of a player rendered or not, and is this determined by the engine or tha card? How about 3D figures. A player approaching a house similar to a box, simply seeing the front pane with no corners. Are the walls that are out of sight rendered, and what makes this decision? Since the maximum you can see of an object is limited to 180 degrees, a straight line, are the parts which you cant see rendered? How about a player approaching a house, with no windows, but a closed door that has objects inside. Are the internal materials rendered?
Thanks for taking the time to asnwer some of my questions. This will truly help me, a beginner, understand more about 3d gaming.
Im no pro at 3D yet, but I tell you what I do know..
The engine isn''t within hardware or drivers, the game itself needs to have the engine, for instance the ''unreal engine'' is licensed to other game developers.
To determine what card the user has, you would use DX8->GetAdapterIdentifier(
). You can get the capabilities of the 3D card (such as bump mapping etc..) using ->GetCaps(
).
Whatever the game throws at the 3D card, it will render it, but only if the pixels are within the screen. Thats why the unreal engine and the like are so fast, it filters out all the hidden walls and off-screen items.
The engine isn''t within hardware or drivers, the game itself needs to have the engine, for instance the ''unreal engine'' is licensed to other game developers.
To determine what card the user has, you would use DX8->GetAdapterIdentifier(


Whatever the game throws at the 3D card, it will render it, but only if the pixels are within the screen. Thats why the unreal engine and the like are so fast, it filters out all the hidden walls and off-screen items.
Game Download ZeroOne Realm
Downloads: ZeroOne Realm
Ok here''s how it works.
I will use OpenGL for instance but it applies to DX too I believe.
The OpenGL driver will perform clipping on the objects which are not in your field of view automaticall. All objects which are in the field are drawn, normally checked against a depth buffer and points within a polygon which are further away than points already drawn in the same screen location it will not draw it. So it does automatic hidden surface removal. Normally you can turn on backface culling in your api (OpenGL: glEnable( GL_CULL_FACE) ) and it will take care of not drawing the backfaces.
However
You still want to perform additional culling yourself. The reason is that although the driver will automatically cull and do HSR, you still need to send all of the data to the video card and the video card still needs to process those vertices as if they were visible in the beginning. If you are working with thousands of vertices and indices this can severely limit your framerate. You can do it much faster with software routines with all current hardware that I know of.
And if you have alot of objects in your FOV you still want to try and remove the objects which are obstructed if you can do so cheaply (don''t waste too much time on precision, depth buffers are pretty fast now in hardware... a little bit of overdraw is normally cheaper than full precision HSR). Because the drivers normally will not remove objects which are obstructed, but it will draw them all if they happen to be in a back to front order due to the nature of depth buffers.
For the best speed you probably want to look into something like an octree(or k-d tree) and portal engine combination if it is an indoor engine.
I haven''t gotten into outdoor engines yet so I can''t really offer experience there, but I am thinking a k-d tree with LOD distortion would work great. If somebody knows a better way plz say so cuz I will be going there soon
Hope this cleared some things up
Seeya
Krippy
I will use OpenGL for instance but it applies to DX too I believe.
The OpenGL driver will perform clipping on the objects which are not in your field of view automaticall. All objects which are in the field are drawn, normally checked against a depth buffer and points within a polygon which are further away than points already drawn in the same screen location it will not draw it. So it does automatic hidden surface removal. Normally you can turn on backface culling in your api (OpenGL: glEnable( GL_CULL_FACE) ) and it will take care of not drawing the backfaces.
However

You still want to perform additional culling yourself. The reason is that although the driver will automatically cull and do HSR, you still need to send all of the data to the video card and the video card still needs to process those vertices as if they were visible in the beginning. If you are working with thousands of vertices and indices this can severely limit your framerate. You can do it much faster with software routines with all current hardware that I know of.
And if you have alot of objects in your FOV you still want to try and remove the objects which are obstructed if you can do so cheaply (don''t waste too much time on precision, depth buffers are pretty fast now in hardware... a little bit of overdraw is normally cheaper than full precision HSR). Because the drivers normally will not remove objects which are obstructed, but it will draw them all if they happen to be in a back to front order due to the nature of depth buffers.
For the best speed you probably want to look into something like an octree(or k-d tree) and portal engine combination if it is an indoor engine.
I haven''t gotten into outdoor engines yet so I can''t really offer experience there, but I am thinking a k-d tree with LOD distortion would work great. If somebody knows a better way plz say so cuz I will be going there soon

Hope this cleared some things up

Seeya
Krippy
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement