• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Archived

This topic is now archived and is closed to further replies.

Shinkage

Ideas for Hidden Surface Removal

5 posts in this topic

1) You can read some good articles about fast terrarian rendering. You can find links for them on www.gamedev.net/opengl

2) There is also Painter's algorithm to remove non-visible surfaces. This algorithm described in many good graphics books. But i think it might be too slow for rendering small polygons. In this case i recommend you to use z-buffer (render terrarian with just updating z-buffer, and then render all objects with normal z-buffer testing), or, if your terrarian polygons will be as small, as object's polygons, you can make a rendering list and sort all (terrarian and objects) polygons by av. z-value and then render them in back-to-front order. That's the way we used in our little 3d landscape engine (look at the demo http://codexorg.webjump.com/eng/codex/main.htm )

0

Share this post


Link to post
Share on other sites
Thanks for the advice. I've already implemented z-buffering in my engine, so rendering polygons that aren't supposed to be there is not a problem. Perhaps if I used a "reverse" painter's algorithm combined with my idea for splitting everything up into little chunks, rendering them in a front to back order. This would make sure that many more polygons would be cought by the z-buffer before being rendered. The problem is that I'm already sorting all the polygons in the scene by their material so that I can render all polygons of a single material (and texture) and a time. This supposedly gives you a good performance benefit, but I have yet to do any comparative testing on the matter. It'd be a shame if it just wasn't worth it, because it was very annoying to design the engine so that doing that sorting is fast and easy. Anybody else done testing on how much doing that kind of material sorting speeds up rendering? I wonder if it would be a better boost in speed to do the front to back sorting instead...
0

Share this post


Link to post
Share on other sites
Rendering front-to-back using z-buffer isn't a good idea, especially on Pentium with it's branch prediction overheads. Comparing values in z-buffer isn't a good idea.
But you can accelerate this (as maded in all 3d games, i belive) if you will render all faces you know will not intersect with each other (terrarian surface, for example) with just z-buffer update mode (no comparison)
and then render all other objects with z-buffer compare mode (as i already describe in previous posting)
0

Share this post


Link to post
Share on other sites
Well, after some thought I just decided to totally forego implementing a software rendering mode in the engine I'm making, so z-buffering would be done by the video hardware. It's just not worth it now that fast 3D hardware acceleration is quickly becoming the standard. That being said, I would think that if I were to rely on the z-buffer at all it would be best to use front to back sorting in order (which I probably will NOT end up doing anyway...) to eliminate as many polygons as possible.
0

Share this post


Link to post
Share on other sites
I've been playing around with a 3D rendering engine for outdoor scenes with arbitrary geometry and I thought I'd throw a few ideas around this board about how to do VSD for the world geometry. I was thinking that perhaps some people out there might have some ideas to help me along and that I might even be able to spark ideas in others. Any comments are very welcome.

To start out, the world will be made up of two discrete types of objects. The first will be a simple triangulated heightfield as the underlying terrain. The second will be structures of arbitrary geometry resting on that terrain (houses, towers, bridges, etc...). In the end, I'm hoping to turn this engine into a role playing game of some variety. Well, as for VSD, I thought that using separate methods for the two different types of geometry would be the best approach.

For the terrain I thought I'd just test where the viewing frustum intersects the terrain and render everything within those boundries. That's the fastest method I could figure out to render an arbitrary heightfield.

As for the structures that rest on top of the terrain, I came up with a sort of two part VSD method. It involves breaking them up into smaller "chunks", each being of relatively small size and constant texture and then computing the bounding spheres/boxes for these chunks and testing them against the viewing frustum. As these primitives are easier to clip and this could quickly eliminate the portions of the structure that are outside of the viewable area. Then I could use front-side (done before transformation and lighting) backface removal on the remaining polygons to come up with a smaller visible set. The problem with this method is that it only culls out the polygons that either are outside the viewable area, or not facing the user. It does nothing for polygons that are occluded by other polygons. Here is where I was really wondering if anybody had any better ideas or even possible improvements on my idea.

0

Share this post


Link to post
Share on other sites
Hi,

Zbuffer and only frustum really isn't enough to keep large outdoor environments fast.
I've created antiportal support which act as occluders, you can place them inside buildings for example. everything in the volume behind the antiportal won't be processed by my engine. Also it is important to create some sort of hierarchies in your world. Like octrees. Split up your landscape into sectors, and split these large sectors up into smaller ones etc etc.
Then check the boundingboxes of the large sectors against the frustum and occluders, if they are not visible then you can skip all elements inside the sector. If it however is visible you check the smaller sectors within this sector etc...

It's also cool to automaticaly generate occluders inside high hills and mountains. This really can speed things up. Also level of detail is very important on landscapes. There are many ways to do this.

I hope I helped you a bit in the good direction with this message.

- John vd Burg
Programmer of Oxygen3D http://www.mysticgd.com/oxygen3d.htm

0

Share this post


Link to post
Share on other sites