Home Forums Development discussions Future development

Viewing 15 posts - 76 through 90 (of 157 total)
  • Author
    Posts
  • #415
    Akira_San
    Participant

    That would be a cool feature. 🙂

    #421
    Sponk
    Keymaster

    I’m planning to release 0.4 soon. Please do some final testing and tell me about all issues you experience. This release will be the biggest yet!

    #442
    Akira_San
    Participant

    What i would like to see in 0.5 is some render statistics, like draw calls, number of meshes, number of triangles, fps in the game window. Some more behaviors like “Object pool manager” Object Pool link info: Improve performance and memory use by reusing objects from a fixed pool instead of allocating and freeing them individually.

    #443
    Sponk
    Keymaster

    Well, writing a custom memory allocator that is more efficient than the default one is very difficult. Object data is not frequently created or destroyed in the engine itself and Lua would not use the pool anyway, rendering the new allocator nearly useless. In addition has to be said that this memory allocator would not be cross platform, meaning that there would be one for Mac/Linux, Windows, Android, Emscripten etc. which is unmaintainable for me.

    Do you really have your bottleneck at allocating memory?

    The biggest performance improvement is probably found in the multi threading mechanism. There has to be much more happening parallel which currently is blocked by the absence of a working IPC mechanism like messaging. Another thing is moving all visibility testing to the GPU using OpenCL on platforms supporting it. Here again: How much is there to gain? Is it worth the time to develop and test it?

    Before making any assumptions about optimizations we need real data which show the bottle necks. To do something simply because it sounds cool or because someone else did it does not mean it’s of any use in our case.

    Because of that we need more profiling options. I already have some thoughts on how to integrate them into the work flow from an UI stand point and how to integrate them into the engine to show accurate data.

    I think the biggest challenge (at least for 1.0) will be bringing the Android (and future Emscripten) port on par with the PC version.

    I want to remove the old Maratis editor completely with all dependencies we don’t need any more from the repository. That would include the MGui library which is not used by Neo anymore. What do you think about that?

    #451
    Akira_San
    Participant

    Because of that we need more profiling options. I already have some thoughts on how to integrate them into the work flow from an UI stand point and how to integrate them into the engine to show accurate data.

    I like this.

    Another thing is moving all visibility testing to the GPU using OpenCL on platforms supporting it. Here again: How much is there to gain? Is it worth the time to develop and test it?

    I know from the blender perspective, that blender got upgraded, thx to the open movies, that brought many new features faster. Those features were based on the production artists requirement. So best is if there is a game or a project, that its features are on its list ( i know that there is. 🙂 ) So is it worth, it depends.

    Object data is not frequently created or destroyed in the engine itself and Lua would not use the pool anyway

    From a game perspective, firing multiple of bullets by creating and destroying can be consuming. But a pool manager is mostly used in an android platforms as an optimization. Anyway that can be coded in lua, but u`ll need to interact with it in lua.

    I think its reasonable to removed the old Maratis dependencies.

    #452
    Sponk
    Keymaster

    0.4 is out now.
    I will clean up the repository and source code to be easier to understand by eliminating some unneeded dependencies.

    #459
    Akira_San
    Participant

    Some more good info from the net! I dont know if you know about this links, but its good for everyone to take a look.

    “Wolfire Games has an excellent blog post about “fast object instancing“. What they do is render the model a bunch of times, but send a different matrix for each object to a uniform slot.

    This is a pretty efficient way to instance a whole bunch of objects, because you only have to send the data once (the biggest bottleneck when rendering a batch of objects will always be bandwidth) and then transform the model in a shader.

    Links:
    Fast object instancing link
    GLSL pseudo-instancing pdf link

    And some nice vid about WebGL Techniques and Performance https://www.youtube.com/watch?v=rfQ8rKGTVlg

    Whats your opinion about Fast-object-instancing?

    #460
    Sponk
    Keymaster

    Thanks for those links, the technique looks very interesting 😀
    The problem with pseudo-instancing in Neo is the dependency on GL immediate mode render functions which are not available in GL>=3.0 core profiles and GLES. Yes, there are drivers that implement GL<3.0 in their driver (compatibility profile) but I don't think that this should be our target. Our target is using the most current technology to the extend in which it is compatible enough with most hardware. Currently that is OpenGL 3.x-4.x and GLES2 in many (if not all) cases.

    I think the idea of using immediate mode functionality to use modern techniques is very interesting even if we will not use it like they described. Our goal currently is the default approach using hardware instancing. There are still enough problems to solve before this can happen 😀

    There are some questions to be answered like "When should instancing be used?" or "How can we apply visibility tests?", "How many instances should be in one batch?" etc.

    #461
    Akira_San
    Participant

    I see. 🙂 Ok ill look for information around the net.

    #473
    Akira_San
    Participant

    OK. I searched almost a day around the net. 🙂 Im gonna ask the questions on the gamedev forum, but what does that mean “How can we apply visibility tests?”

    While i searched, i found this ->
    http://www.gamedev.net/page/resources/_/technical/opengl/opengl-instancing-demystified-r3226
    http://www.geeks3d.com/20141017/opengl-geometry-instancing-test-radeon-vs-geforce/
    http://www.geeks3d.com/glslhacker/cs/ – looks very nice, like eye candy images!
    http://www.g-truc.net/doc/Candidate%20features%20for%20OpenGL%205.pdf
    http://blog.tojicode.com/2013/07/webgl-instancing-with.html
    http://rastergrid.com/blog/ – Looks like very nice site. It have some nice stuff, like GPU based dynamic geometry LOD, Hierarchical-Z map based occlusion culling…
    Hope those links are useful.

    #477
    Sponk
    Keymaster

    Thank you for those links 😀
    Please don’t ask any questions in any external forum for me. If I want to know I will ask myself.

    #478
    Akira_San
    Participant

    Ok. 🙂 Forgot about this link NVIDIA GameWorks OpenGL Graphics and Compute Samples
    It too have an Instancing Sample, Instanced Tessellation Sample, Multi-Draw Indirect Sample.

    #479
    Sponk
    Keymaster

    Thanks, I will look into all those resources as soon as I have some time 😀

    #517
    Akira_San
    Participant

    Found a bug: when selecting 2 objects and moving them, then select one of them and try to move it, its not working. The 2 objects are still selected.
    The view camera can be annoying at times. When you try to go too much forward into the object, it got stuck inside and cull some from the screen. Can something be done about it? For example in Blender the camera dont do that.
    I also think, that there is a need for a “global settings”. like for example being able to turn on/off things like, particles, change the shading, etc…

    #518
    Sponk
    Keymaster

    If you select multiple objects you can drag them directly through the scene using your mouse. This makes it difficult if not impossible to guess if you want to deselect them or if you just want to move them. Any suggestions?

    Global settings for shading would be easily done (given that you have some sort of setting to change?). The bigger problem is controlling particle systems. They are organized as a behavior and are not integrated into the engine itself. I guess we could make some sort of global “settings center” where behaviors and native plugins can put some sort of key value pair for easy config, similar to the Windows registry. That would also allow simple saving of game data like window resolution and other settings you might want to save.

    Btw: I’m currently working on the new in-game GUI system so that will take up most of my development time for now. I’ll write a blog post with some screenshots later 😉

Viewing 15 posts - 76 through 90 (of 157 total)
  • You must be logged in to reply to this topic.