• 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.
Sign in to follow this  
Followers 0
Neosettler

VBO and Multi-Material!?

4 posts in this topic

Greetings everyone,

I’ve been looking around and found many threads on this topic but none of them seems to tackle my concern specifically. So I’ll try to explain my approach in drawing geometries with multiple materials.

For simplicity sake, let’s focus on only one geometry.

Geometry:
-Meshes Array
-Vertices
-Vertices Attributes
-VBO

Mesh:
-Face Indices
-Material

This concept first appeared ideal for sharing the vertices between meshes but consider a geometry composed of 4 Quads:

---------
| A | B |
----+----
| C | D |
---------

- VBO is aligned ABCD
- Mesh1: Material1: Face Indices AD
- Mesh2: Material2: Face Indices BC

The problem:
Chances are that Mesh2 will be rendered correctly because the Vertices are packed one after the other in the VBO but Mesh1 might have wrong data since the Face Indices AD are not align in the VBO.

The goal:
To share V, VA and VBO between meshes. Avoiding geometry reconstruction and using FI to render whatever part of the geometry, leaving the VA undisturbed from their original structure (presumably imported from an CG package).

Now, could this be done or I’m dreaming a fantasy world?

0

Share this post


Link to post
Share on other sites

it can be done, you could tag each face with an index, and then pass a texture buffer, or array of materials to the shader, and choose the appropiate material.

 

however, unless your going to be very memory intensive i'd recommend:

A. if the only diffrence in the mesh face's are textures, try to merge the textures(either on-load if you wanna go that far, or more likely pre-process them in some photo editing, and update model uv's to reflect these changes).

B. split the mesh by materials.

 

I personally employ B at the moment, however the concept of using super textures as of late makes me want to implement A in some form.

0

Share this post


Link to post
Share on other sites
Hi Slicer, thank you for your input
it can be done, you could tag each face with an index, and then pass a texture buffer, or array of materials to the shader, and choose the appropiate material.

I'd be very interested if you could elaborate this concept. I use your B scenario, not only for textures but for all material properties.

My main concern is how to pass the face indices from the new spit meshes to the VBO. As it is for now, the materials seems to be distributed to the right faces but some vertices go to 0,0,0 stretching the whole model or, some vertices are connecting faces that shouldn't be connected. I wonder if I do have to reorder the vertices some how for the meshes to render properly.
0

Share this post


Link to post
Share on other sites

no matter what, your vbo is going to have to duplicate vertices for different materials/faces, so if each vertex is given an id along with position/uv/normal data, then you simply need to pass a struct array of your material's as uniforms to the vertex shader, or alternatively, use a uniform/texture buffer and extract the information in them to use.

 

however there are some things you should note.  first of all, older graphics cards don't support tons of uniforms, and your gambling if older cards support texture/uniform buffers(which are standard in i believe OGL 3.3, but are extensions before then.) , secondly you'll probably have to combine this with texture arrays in order to support materials with different texture's.  pretty much this would be best suited for more modern graphics card's.

 

personally i'd make sure you even have to do this first, if your having performance issues, try doing culling techniques to eliminate unseen model's/rooms.

 

i've never attempted this, so i can't give you any number's/percents on if such a tecnique well actually give you a performance boost, so it's purely speculative from my end.

1

Share this post


Link to post
Share on other sites
no matter what, your vbo is going to have to duplicate vertices for different materials/faces, so if each vertex is given an id along with position/uv/normal data,

Oh, Vertices and Vextex Attributes duplication is the main thing I was trying to avoid but at least I know there is no other solution... really? Anyhow, I'm curious to know how 3D packages like 3dmax/Maya/Softimage recalculate VBOs of the geometry as the material ids/face clusters are being changed... very puzzling to me.

Thank you for your inputs Slicer, very appreciated.
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0