Jump to content

LOD system questions


Rick
 Share

Recommended Posts

Rick, it wouldnt affect speed at same rate simply because you will share same texture/materials, over same model..vertices are cheapest thing to keep in memory...test it yourself..load in to any engine, one single large mesh, let say, 150K triangles, no texture of any kind attached to it..record frame rate..now, exit and load identical mesh but this time, with texture attached to it..look at frame rate now..it will be noticeably lower..vertices are cheapest to deal with, and long as your LOD meshes share same texture/material, speed impact will be minimal...heavy memory load is related to textures in memory, not really vertices..however, processing vertices(due amount), can impact performance, but classic LOD if you need it, doesnt really do that so it will be for sure, faster on not so modern hardware than any tessellation processing...on modern hardware however, as stated before, you really don't need LOD, relatively speaking, to amount of characters you will have seen at once..

 

Link to comment
Share on other sites

@Rick :Model above file i posted Connor is 2.6 Mo for the hightest resolution mesh , 2.6 Mo because buttons, pockets, boots details etc ... are all modeled and in the main character not as separated parts.

 

And really well rounded as you can see : no need for tesselation :konnor.jpg

Needing lower LOD will be lot less memory.Do you think the total of charcters memory and LOD is so big ?

 

- High res : 2.6 Mo

- Mid res LOD : 1.5 Mo

- Lower LOD : 800 ko- lowest : 300 ko

Total : 5 Mo approx

 

That's really nothing compared to textures of 4Mo or more. A single detailled texture Diffuse can go from 2Mo to 8Mo or more, if you add normal map, specular, if each is 4 Mo , you are already at 12Mo.

 

I would see some inverse tesselation system, not sure tesselation can do it : decrease polygons.Bu the results will never be as good if you do by hand, and that's where i agree with Naughty Alien and veteran people working in concrete games in the industry.

 

------------

@Naughty Alien :

Yes, lot of people are not aware how very low memory are vertices to store in memory compared to textures.With today consoles and hardware storing the High Res character of 3Mo or more is current in all AAA games.

Stop toying and make games

Link to comment
Share on other sites

..simple way to determine memory pressure based on textures..

 

RGB Compressed DXT1 0.5 bpp (bytes/pixel)

RGBA Compressed DXT5 1 bpp

RGB 16bit 2 bpp

RGB 24bit 3 bpp

Alpha 8bit 1 bpp

RGBA 16bit 2 bpp

RGBA 32bit 4 bpp

To figure out total texture size: width * height * bpp. Add 33% if you have Mipmaps.

 

..as for triangles..Geforce 6600 can do 375 million vertices per second(provided that no texture or anything is loaded),and its VERY old card, and as you can see, there is more than enough triangle space, far more than you can have with textures..

  • Upvote 1

 

Link to comment
Share on other sites

Just to show you why i think Tesselation is useless, the model without any norml map is already very well rounded, why tesselation ?

lightening.jpg

 

----------------------------

 

 

@yougroove, you are still not understanding things here. First off you can see at the top of this picture that this model has a total of 34,327 triangles. Which is kind of high for a top LOD. For some reason when you think of tessellation. You are only thinking of a high poly count dense mesh. I have no where mentioned to Tessellate a model as high or higher than 34,327 triangles. I am saying you can go from a low poly basic humanoid shaped mesh,

post-570-0-40953900-1392491713.png

and at different ranges from the camera Tessellate the model to a MEDIUM POLY COUNT OR A HIGH POLY COUNT LIKE YOUR 34,327 TRIANGLE MODEL.

 

Everything except for one thing I have mentioned is not theory. This stuff has been and are being used today. The only theory I mentioned is the ability to create a complete 3d object with a two sided plane. Let's say on a tree trunk it may be hard to hide the seams of the back to back planes. Unless you create a lot of detail in the bark. Then it would be easy to hide the seams. It would be even easier to hide the seams in a door jam or walls where they can intersect.

Link to comment
Share on other sites

..tessellation is no magic and rather simple process, yet it can be time GPU time consuming..there is no doubt that it can be used, but fundamental question is, do you really need it when modern hardware can crunch triangles necessary for good looking model with ease..it is truth that in such scenario, use of tessellation would be downsampling, in order to get less triangles to render..however, having in mind that modern hardware have huge vertex buffers, capable to store enormous amount of vertices, so, tessellation is really not a necessary option to have really even if you want to downsample your character mesh..point is, if you have not so many characters on scene, and using modern hardware, you really dont need any tessellation as LOD on mentioned characters..if you have plenty of characters (eg. 100), in order to keep your performance up, you will most probably rely on instancing in order to populate such amount of characters(same skeletal/mesh with different textures), rather than have tessellation over every single character..other people in some AAA ranked studios, realized that and I dont understand whats the problem here..i see tessellation well used over static geometry, but not at all on animated characters (if we talking modern hardware)..

 

If game need to be executed on modern and not so modern hardware, and far as im, as a developer concerned, I want that,,in that case, use of tessellation is no go for both, characters as well as geometry, because chances are, it will not work on plenty configurations or it will be very slow..all in all..its nice and not worth trouble you may get yourself involved..simple as it is..

You keep say that tessellation is slow and yet never provide any bench mark on this. I have. 1.6 billion a second. Which I am guessing is more than leadwerks can render a second.

 

.if you have plenty of characters (eg. 100), in order to keep your performance up, you will most probably rely on instancing in order to populate such amount of characters(same skeletal/mesh with different textures), rather than have tessellation over every single character.

 

This is kind of bland and boring isn't it. Really? Every character the same size and shape. Just different normal and texture maps to tell them apart. If only there was a better way. Wait there is. How about use one low poly humanoid primitive. And create each and every character from it (primitive) with tessellation. And since I now have less textures,bones,mesh taking space. I create more junk to throw in a game.

 

 

If game need to be executed on modern and not so modern hardware, and far as im, as a developer concerned, I want that,,in that case, use of tessellation is no go for both, characters as well as geometry, because chances are, it will not work on plenty configurations or it will be very slow..all in all..its nice and not worth trouble you may get yourself involved..simple as it is..

 

OpendGL4 is OpenGL4. It will not work for lesser hardware. So the fall back renderer is what we have to be "backwards compatible" for hardware on a PC. I am sorry but I am looking for graphics better than that. Unless you are talking about phones and tablets and **** laptops.

 

Obviously traditional LOD has worked over the years. But to me, I am just kind of getting tired of seeing the same models in a game. Over and over again.

 

The type of game depends on the systems you need for your game. LOD does work. However if you want bigger and more populated games. You need to find or figure new innovative ways.

Link to comment
Share on other sites

rather than have tessellation over every single character..other people in some AAA ranked studios, realized that and I dont understand whats the problem here.

 

Not every character or model would be tessellated at the same time or every frame. You would set distances from camera. Just like LOD. I mean you wouldn't want to change every single LOD on the map at the same time right?

Link to comment
Share on other sites

@tournametdan if I understand what you are saying, instead of starting off with a regular model with all the details already present then subtracting polygons to create the lower poly lod versions, Create an almost featureless model such as (since I had to scroll past it) a Lightning model where you don't model the clothes and the hair resulting in a low poly model then selectively tessellate the features back into the mesh resulting into a normal poly mesh.

 

This would be a very interesting concept to put into practice, but I have a feeling that even if we could use the same shader to generate the tessellation, we would need to do substantial work making the displacement map. This seems to me a demoscene level of dedication to creating the smallest most effectient way to model, store and render an object

 

I'm just a noob at actual opengl coding, I've created obj model viewers and such from scratch but shaders are beyond my comprehension atm. Let me know if I'm talking out my *** or if I just need to be corrected on certain points.

 

Actual it would take less work to create assets for tessellation. I have to do a bunch of stuff right now. But in a little bit. I will gladly give kind of a general process on character creation for LOD and Tessellation.

  • Upvote 1
Link to comment
Share on other sites

Calm down lol laugh.png

I'm not techguru or whatever , i understand nothing of all your tech stuff.

Just understood for you tesselation is going form Low poly to hight for characters ? right ?

 

The problem is in REALITY industry, they start with HIGH RES model, like Lightening i posted, than with tools and with some hand work , they easy decrease poly numbers for lower LOD.

Yes your tesselation is totally useless on Lightening as the model si super rounded already.

 

(Re Read Naughty Alien post about vertex memory Vs texture memory.)

 

----------

I have to do a bunch of stuff right now. But in a little bit. I will gladly give kind of a general process on character creation for LOD and Tessellation.

 

 

Ohhh yeah ,, great great to hide so easy after talking so much .... i taken the time to find charactersn, import in blender, verify vertex number , topology etc ...

What you say is : I'll give you the process n theory , but i'll don't do it indeed ... let me laught.

For me you are not a serious game maker as you even don't have the courage yourself to try it and make a character tesselation.

 

 

Stop beeing the surfer talking a lot but that never touched a surf mellow.png

 

----------

 

In fact you alreadt know character tesselation will be a total mess, just seeing your Minecraft like character it is obvious that tesselation won't do miracles and it will look bad.

And you don't know anything on how ot do it yourself that's why you can't show anything yourself.

 

-----

I have nothing , but really nothing against you.

I think you are a nice guy indeed.

 

But well here in LOD i need CONCRETE STUFF :

1) CONcrete LUA CODE for LOD

2) or some Concrete Tesselation code and tess map and model

To try them myself

 

So that's whay i don't care about all theory and blabla, i'm concentrated in practice and puttting it real in LE3 in a demo prototype that runs it ,so real code and REAL EXAMPLE.

 

IF you can bring a real LOD code and 3D model, good i'll test that, if not, i just pass.

(But well old LOD technique used today in industry is what really matters in fact for me)

SIMPLE NO smile.png

Stop toying and make games

Link to comment
Share on other sites

Dude, Yougroove, stop.

 

You are not contributing anything to this conversation. You are just arguing for argument sake and not understanding what is actually being said. Yes people are talking about LOD, No we are not AAA game studios but hobbyists or indie developers with other things on our plates. Did you even bother to look at that terrain tessellation video? That there is EXACTLY what he is talking about being implemented in realtime. A LOW POLY, LOW DETAIL model being tessellated to add the missing details. We are not talking about taking a High poly model and making low polys from it but the inverse. Taking a low poly model and tessellating the details into it. What we could be arguing is the effectiveness of this technique when done in large scale worlds versus using static models and no LOD at all.

 

If you care so much why don't you take the initiative and and prove what you are saying instead of relying on what you read on blogs and posting blender screenshots. Stop sitting around and waiting for people to drop mana from the sky directly into your lap. Get your hands dirty and prove that you have a working knowledge of what you are talking about instead of regurgitating what you have read. Who knows what you will discover, hell the community can take your findings and develop something awesome. So instead of telling people that they are wrong and that you know everything, always entertain the notion they may know the tiniest bit of something that you might not know of.

  • Upvote 2
Link to comment
Share on other sites

While we are throwing out links and stuff, How bout these

 

A 2 year old thread with an actual answers

http://forums.anandtech.com/showthread.php?t=2219261

post of note: http://forums.anandtech.com/showpost.php?p=32858257&postcount=15

 

Originally Posted by jordanecmusic viewpost.gif

I just got a great idea. Why don't developers use tesselation to actually create the models? Therefore decreasing time to make the model and increasing the detail of it? Sort of like a premade tesselation based model, instead of our gpu actually trying to calculate what polygons go where.

 

That would probably less computation extensive compared to real time tesselation, but it would have to be the same results

 

There are a bunch of posts shooting this particular method down, but most agree that if you start with low poly and tesselate up you can get decent results without too much of a performance hit.

http://forums.anandtech.com/showpost.php?p=32862441&postcount=17

 

a 2/3 year old forum thread talking about exactly what we are talking about but CONSTRUCTIVELY

http://www.polycount.com/forum/showthread.php?t=81887

 

From that thread I have found some of the videos since some links no longer are active:

 

 

NVIDIA Alien vs. Triangles Tessellation Demo:

 

The pdf talking about the science behind the teselation from the video (with code):

http://www.nvidia.com/content/PDF/GDC2011/John_McDonald.pdf

You might want to check out page 7 of the pdf (LOL)

 

and

 

Epics/Unreals example of dynamic displacement

http://udn.epicgames.com/Three/TessellationDX11.html

 

Look at that, links from the engine makers and graphics card makers that say it can be done. WITH CODE, isn't that what you wanted?

Link to comment
Share on other sites

...nobody said it cant be done..i haven't seen a one post saying that..but I will be more than happy to see a game spreading from latest modern hardware down to hardware just 3-4 years old (as a developer, you should care about this, unless you are Crytek or Epic and pushing up high end stuff), and using tessellation across all hardware setups (not just nVidia)..it was never question is it doable or not or does it exist..DX9 can do it just fine and its well documented in DX9 SDK, so its already how long?? 10 years? There is a reason why mentioned technique is not become a 'standard' yet, even exist for some time, and reason is NOT is it doable or not, but hardware mess, manufacturers created, what makes your code rather difficult to deal with all that, hence, making your code probably crash on some configurations...thats all...if you want to run your game on latest hardware, go for it by all means..if you want to hit much wider audience, you will not go with tessellation..

 

@Rick

My apologize, if my contribution here caused confusion, as your question was rather simple. In order to make it simple, much as i can and know, Ill tell you this. Do not trust a word i have said. Maybe take it as a some sort of remark or warning, if you please. I suggest, you try yourself mentioned techniques, and see for yourself what will do best, and how your code will perform and then make up your mind based on personal evidence you will collect trough such process. I have done similar things few years ago, and that was basis of my claims here. I may be wrong, of course, as my knowledge about matter is limited, but i do understand principle behind it. Do yourself favor, and test it yourself, as entire this thread is turning it to a confusion. All best bro..cheers..

  • Upvote 1

 

Link to comment
Share on other sites

Naughty Alien no doubt, Every link i posted says the same thing that you do. And we KNOW we cant trust an Intel Graphics processor to be up to the standards ati/amd and nvidia are trying to push. I just want to see what people come up with and the methods they use to accomplish it. Want I didn't want to see is an argument about why its not feasible. Look at the Source Engine it's not exactly the most up to date engine but it sells well due to its accessibility to common hardware. Will people take advantage of this sort of rendering technique with the leadwerks engine, odds are no. But if your one of the few that manage to make something great with leadwerks i want to know that there is the option and the work already started.

Link to comment
Share on other sites

I'm curious as to how you would go about making an LOD system given LE 3.1 as it stands today. [...]

Any other ideas on how to do this?

To sum up the 5 pages : you just need to find some spherical cow that can live in a vacum!

System:

Linux Mint 17 ( = Ubuntu 14.04 with cinnamon desktop ) Ubuntu 14.04, AMD HD 6850, i5 2500k

Link to comment
Share on other sites

Dude, Yougroove, stop.

No, its ok. I would like to thank yougroove. Thank you for finally giving me a good enough reason to hit the block content button. My only advice is to remember that you have all ready been banned from one video game engine community.

 

...nobody said it cant be done..i haven't seen a one post saying that..

You never really said it directly. But when you say...

it will kill frame rate in a heartbeat,

And.

or it will be very slow..

At least to me that means that it will not work because it will be to slow.

 

 

.DX9 can do it just fine and its well documented in DX9 SDK, so its already how long?? 10 years?

I see that your experience with tessellation is with DX9. To be honest, I can understand your apprehension towards tessellation because of DX9. I have already answered this comment with a previous post. So I do not sound like a broken record. I"ll just quote myself.

 

 

There were earlier version of tesselation before dx11 and opengl4. But they were not too performace friendly. Tesselation became realtime performance friendly after dx11 and opengl4.

 

. There is a reason why mentioned technique is not become a 'standard' yet, even exist for some time,

I have also previously answered this comment with...

 

This has not been widely used because the general public has not had the hardware. Game studios are not going to make a game for a couple people. As the last couple years have gone by. More and more people have up graded their hardware. So now it is becoming more and more popular.

 

.however, having in mind that modern hardware have huge vertex buffers, capable to store enormous amount of vertices, so, tessellation is really not a necessary option to have really even if you want to downsample

The savings are not only in memory. Vertex buffers are different from rendered polygons right. Or do I have this wrong?

The whole idea of a LOD system is to render as many polygons closest to the camera. With tessellation you can render more polygons closer to the camera while lightening the load on memory. Win win in my book.

 

@Naughty Alien: I hope you understand I am not arguing with you. Just having a discussion. I certainly like and respect you for helping me in the past and also continuously helping the Leadwerks community.

 

@ Rick: I hope you do not think that I am trying to shove this tessellation **** down your throat. I guess I got stuck in a loop because I just felt like people were not understanding me. LOD obviously has worked over the years. I just plan to try and make large worlds that are populated with uncommon models.

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...