Jump to content

Josh

Staff
  • Posts

    24,629
  • Joined

  • Last visited

Everything posted by Josh

  1. There's not necessarily even an entity associated with every material. I would use the entity draw callback for anything that needs the entity.
  2. Sorry, the docs were wrong. There is no second parameter in the callback: http://www.leadwerks.com/werkspace/page/Documentation/le2/_/command-reference/materials/materialdrawcallback-r295
  3. You don't have to redo anything, just click the option and it will work.
  4. It looks like your text resolution is really big, but I don't see how that would make a difference. Go to Help>About and it will show the version of the program.
  5. I have done much denser scenes at a high framerate. It's hard to tell how far off the trees are visible, and how dense they are. Distance culling is your friend. The smaller a plant is, the nearer the distance culling should be. This can make the difference between unplayable and good frame rates. It also appears you are attempting to fill the emptiness of the scene by adding unnaturally dense trees in the far distance. Ground cover will do a better job of this, and can be distance culled with no visible loss of quality. Add more bushes and rocks to fill up the empty forest floor. If you had twenty rocks visible onscreen, it would make the scene look like a real forest, and the rendering cost would be very little. Billboards can make trees in the distance cost pretty much nothing to render. There's a setting for the billboard distance in the vegetation options.
  6. I experienced this in pure depth-calculated approaches because there was no way to know whether the face was angled, or if it was on an edge with another pixel next to it, further back in the depth buffer.
  7. Incidentally, the reason Crysis SSAO tends to shade object faces for no reason is that because Crysis is a forward renderer, they have no access to screen normals data in the post processing pass. That's why Lord Hippo's SSAO looks better.
  8. In normal usage culling will result in a massive improvement to otherwise unplayable framerates. If you pack thousands of entities into a small space, of course performance will be bad. It's fine for polygon counts to be high, but you should keep the number of passes / meshes as low as possible. This is the nature of modern graphics hardware.
  9. It's working as I would expect. Culling has a cost, but typically also results in savings because entities get skipped. If all entities are onscreen, there will be no savings to balance this cost. It's drawing a lot of meshes for the shadow render. The directional light shadow does not just render what you see, it renders anything the directional light sees that might cast a shadow into your field of view. An object can be offscreen, but still cast a shadow that falls onscreen. The directional light shadow renders three passes for the different light volumes the shadow uses. If you disable shadows you will see that the number of entities drawn corresponds perfectly to what you see onscreen.
  10. You may want to check the model's bounding box. This is a fairly common issue with animated models. Sometimes the animation makes vertices move outside the original bounding box. The solution is to add a few dummy vertices that encompass the entire range of motion.
  11. The limiting factor is how quickly LuaJIT comes up-to-date. We won't see this in LE2.
  12. 3D World Studio is a modeling program to make interior environments and buildings. It is not a game engine.
  13. The BlitzMax module and DLL are updated. ForEachEntityInAABBDo should work with Lua. Just supply the function name instead of a pointer. Requires BlitzMax 1.45.
  14. GetModelLODEntity() and CountModelLODEntities() will let you access all LOD versions of a model. LOD entities get removed from the model hierarchy and are not children when they are not in use at a certain distance. This is because a simple rotation or repositioning of the root model requires all child matrices to be updated. If you have a character with 100 bones, and three LOD levels, that means ~300 matrices have to be updated each time anything moves! In Leadwerks3D, hidden entities will simply not have their matrices updated at all, and LOD entities will still be children. This is a tradeoff because it means you can never count on a hidden entity to have correct matrix data.
  15. I can't comment on the scene without seeing it on my own computer. Something seems really wrong. I see about 20 models onscreen, not 300.
  16. Much more. I think I have the ForEach... command working now with Lua, will upload tonight...
  17. If all your entities are parented to one pivot, as they are when you load a scene, they will all be iterated through, at least. After loading a scene, the first thing to do is unparent everything from the scene root, which provides an easy way to keep track of what just got loaded. However, you should use the vegetation system for stuff like this, as it is specially designed to be very efficient for static objects.
  18. Something is wrong if 4000 entities are being drawn. The Zone only had about 1000 at any given time. Perhaps you have large numbers of models that have complex hierarchies. I can't diagnose this further without seeing the scene files.
  19. No, these get removed from the octree and will not be iterated through.
×
×
  • Create New...