Framapad

The following text comes from a shared file without style constraints, please understand the lack of style quality.

WY0vrnzFbu

Suggestions:

TIP: Never make decisions when you're too sad or too happy!

  • KX_TouchSensor.hitContactPointList [author=Tristan][time=2days]hit/contact redundant 
  • Implement lod hysteresis in viewport[author=][time=1day]
  • panzergame's particle system. Refactor and add a UI [author=][time=2month]
  • Wheel vehicle constraint per wheel python proxy[author=][time=3days]
  • Implement count for CListWrapper [author=][time=1day]
  • AABB center used for alpha object sort [author=][time=4days]
  • KDTree for alpha polygons sort [author=][time=4days]
  • VBO independent vertex update [author = ][time=2weeks]
  • Remove usage of DerivedMesh for render and physics [author=Tristan][time=3weeks]
  • Expose AUD_OpenALEffect, AUD_IOpenALEffectParams (and derivates), etc... to Python. [author=Diego][ge_eax] 
  • MOTO -> MathFu [author=][time=1 month][*** LINK HIDDEN *** ]
  • Deferred/Forward+ Renderer
    • The demo made by @martinsh triggered A LOT of users (they really want this). They are asking me and I don't know what to say.
    • I guess if we want BGE to be more popular we should attempt this in another branch... Even if it's very hard, the viewport will already get PBR...
    • We can always ask for help in #blendercoders, or on ML...
    • *** LINK HIDDEN ***
    • *** LINK HIDDEN ***
  • TwisterGE proposal: getMatching for scene.objects (list of objects that match name, property, material name...) (iteration in c++(avoid python iteration or comprehension lists...))[ge_getmatching]
  • Mesh builder: Create meshes on-the-fly in the BGE.
    • KX_MeshBuilder
    • replaceMesh -> accept KX_MeshProxy as parameter
  • World Textures env lighting (to do: split shader as for cubemaps, restrict UI to sky texture, add condition for color management, move fresnel_fac2 shader at top so we can reuse it to do fresnel for normal cubemaps, review clamp values (test negative fresnel?), test invert fresnel... ge_worldtex_envlight
    • eventually add an option to choose to map reflection according to view normal (as if the world texture was far) or according to view position (as if the world texture was near)
    • eventually split ambient option in material tab to separate environment lighting influence and ambient color influence (does the envlight replace ambient color? If yes, this is not needed)
    • eventually make separete settings for fresnel for reflections and fresnel for refraction
  • Drastic Solution for ImageRender refactor? Do like for cubemaps? Create FBO, attach texture, then each frame bind FBO, Render(), unbind FBO... keep ImageRender for retrocompatibility.
    • I think for the base this can be done very quickly copying planar reflections patch-> UI in texture panel like for planar reflections and cubemaps. For the API it can take a bit more time .
    • Why I propose this? Because I think the stuff done in ImageViewport::CalcViewport could be avoided. Constructor : ImageRender2(RAS_Texture, camera)
    • Width and Height (what will replace capsize) could be set according to texture size (GPU_texture_width and height). Texture could be an ImageNew (grid, blank....). FBO size and SetViewport in new Render() function would be set according to texture size
    • (I already tested it for planars and it worked)
    • 1 other point: with current ImageRender, we have a complex structure based on ImageBase. The code is really hard to read and debug. I think we shouldn't reproduce the same design. I guess this design
    • was choosed to avoid to repeat parts of code inside each feature of VideoTexture. But I personaly prefer to repeat code even if it is not very elegant, because it is not less performant and we haven't a complex structure
    • with complex inheritances, functions that override other functions etc...
    • I propose to do it once the planar reflections patch will be commited
  • Optimization proposal: Instead of having: Multiple materials with the same shader but multiple different textures, we can reuse 1 material but have different textures. In other words, rebind textures and not materials.
  • Reorganization proposal: All what is concerning debugging in RAS_OpenGLRasterizer moved below (ou à partir de) PrintHardwareInfos (ge_camfrustum introduces several debug functions after PrintHardwareInfos)
  • Allow using realtime textures with nodes without materials
  • Allow writing custom render steps. Example *** LINK HIDDEN ***
  • KX_GameObject::Clone(). Just clones the object, not the meshes. This is already the case, no ? only RAS_MeshUser and RAS_MeshSlot are duplicated because they are the bridge between the list of vertices and the objects. These class are very fast to copy.
  • Merge or split batch group in two [author=][time=5days](0.1.8)

0.1.6:

    • fresnel -> panzergame approach to make it consistent with B4Web implementation
    • Culling handler refactor [author=Tristan][time=1week][Plan finished]
      • Some thoughts about culling:
        •  UI: I'd add a menu in Object tab (choose what we want to cull per object: objects physics, object's animations...)
        • Shadowculling: There is no culling regarding to cameras in the viewport. I think the behaviour of lights has not necessarly
            • to fit the behaviour in the viewport. I don't think we should choose infinite boxes. It is an exceptional case where I would be in favor of a little backward compatibility break.
            • If we want to do culling proper to gameengine, we can choose to do culling as we want! :P
            • I think we should do a tuto about frustums to learn to the users to reduce a maximum their frustum to optimize rendering. It will become crucial in the case of global culling refactoring. 
            • But we can also (for lights) do an option per light to desactivate shadow culling (to avoid to break backward compatibility).
            • In this case it won't be an option in the Object tab but in the lights options as I imagine it.
        • Current Culling Code: We'd need to ensure that the current functions that does culling (in CalculateVisibleMeshes) don't return false positive, it could be an important performance leak. I tested and didn't noticed performances differences. But we'd need to ensure with debug drawing(youle)
          • As we work with AABB (boxes) for normal culling, we don't need an approach like this one: *** LINK HIDDEN ***
          • We can have a code without false positives only with this approach which is simpler: *** LINK HIDDEN *** (bottom of the page--The article is interesting).
          • This article shows (and my tests confirm) that our current implementation of BoxInsideFrustum doesn't work for big objects. And big objects are often the ones which have the more vertices (because if we
          • draw a building with 1 floor/stair (étage), we have normally less vertices than if we draw a building with 10 floors/stairs (étages)). So I think we need an exact culling test.
          • CalculateVisibleMeshes could maybe use only this exact culling test.
        • Physics: About physics, maybe add an option to choose a radius per object around the main camera beyond where physics controller is "removed".(warning:  ->BRP said that he lost rigid body joint constraint when he used suspendPhysics)
          • The default radius would be set to 2x or 1.5x main active camera clipend for example...
          • Example: if MainCamera->GetDistanceTo(object) > radius: RemovePhysicsController.  else: RestorePhysicsController
        • Python Scripts: In the culling refactor, I'd include the ability for an object to not execute/update the python scripts which are attached to this object when this object is culled. Not update logic only ? yes, in fact this is a more global approach to "cull" all logic so good idea
        • Animations: Same for animations...
        • Radius: The radius idea can be applied to several types of culling (cf physics)
        • Avoid rendering when mirror/planar/cubemap object (the object with the texture, not the viewpoint) is culled (option enabled by default as I imagine it)
        • For planars, avoid to render when we are on the wrong side of the mirror's object (like for mirrors in ImageRender) already done ah ok cool :) I didn't know
    • bpplayer [author=][time=1week](0.1.6)[ge_bpplayer][done] Awesome :)
    • no modifiers? [WIP] We can make only a part of the refactor, we don't need to remove totally deformer code in 1 big patch
        • I'm wondering if it will be possible to remove deformer code because CDDM_from_mesh(meshobj->GetMesh()); doesn't need the same data as mesh_create_derived_no_virtual(scene->GetBlenderScene(), gameobj->GetBlenderObject(), NULL, CD_MASK_MESH);
          • and in the code we have RAS_MeshObject *meshobj = BL_ConvertMesh((Mesh *)mesh, nullptr, scene_merge, this, false); (convert mesh without blender object)

0.1.7:

    • Use IDProperty in python component [author=][time=2days](0.1.7)[Not began]
    • Font object bounding box [author=][time=1day](0.1.7)[*** LINK HIDDEN ***]

Delayed:

    • Scene layer [author = Tristan][time=2days] (0.0.6)[reason: no users answer about the API]
    • Set cursor image [author=None][time=2days](0.0.9)[reason: unable to set colored cursor, only B/W/T]

Viewport:

    • Per GPULamp unique dynamic uniform flag [author=Tristan][time=4days](0.1.3)[gpu_lamp]
    • Render Engine GLSL API (from blender meeting): *** LINK HIDDEN ***

Free UPBGE Asset Store

    • Preliminary at *** LINK HIDDEN ***!NxFFASLL!R7UkM0CpJlL9_-XBPIPJSQ
    • Based in comments from blenderartists UPBGE Marketing thread *** LINK HIDDEN ***
    • Only CC0 and CC-BY assets allowed (at least at the beginning)
    • I'm structuring textures (floor/ground) and materials but i will put links to other resources.
    • I will try to put at least 20-30 resources for each folder to can show a preliminary version.
    • Can we have a free store in upbge.org? Cool :)
      • download.upbge.org could do this but it should not exceed 5Go(We can use paypal donations to pay for a better server!)

UPBGE Bugs:

    • Deformers (soft body, armature, modifiers) and GI. (Can't we disable it with a warning waiting for a better solution to avoid crash? or just disable geometry instancing in blenderdataconversion for material meshes with GI), solution proposition:
      • Using a "mode" uniform like for hardware skinning. Then allow varying and uniform color/matrix variable and update or not the uniform when detecting we're not using GI. The problem with this method is that uniforms for geometry instancing see ge_nomodifier
      • Use material settings between MB and DAB level
      • are passed to the shader anyway. So it can be a bit slower than if we disable geometry instancing before the shader is compiled to say to not use at all geometry instancing at all (unless I didn't understood something)
    • *** LINK HIDDEN *** (fixed in ge_immirrorbug)
    • Performance decrease when the rendering cubemap camera is inside another object (even if this object has backface culling enabled) I have to test if setting clip start to the value of cubemap sphere radius can solve this issue

BFBGE Bugs:

    • Text AABB
    • Armature bone channel rnapath to avoid interpolate unused layers.
    • The horrible "1-frame-behind" bug.*** LINK HIDDEN *** Notice how the reflection wobbles.
    • Wrong ambient color behavior. The ambient color must be applied BEFORE light calculations. It should behave just like the EMIT property behaves. (B4W's Environment Lighting patch adds an alternative to Ambient Color. We should replicate the behaviour for Ambient.
    • *** LINK HIDDEN *** ?
    • culling bug:  *** LINK HIDDEN ***  [ge_shadowcull][to be rewritted]
    • culling for mirror object (avoid to render mirror if the mirror object is culled). Same issues as for the others...


Investigate on:

    • Multiple tangent for normal map : 5abae51
    • Multitask scene graph per parent tree or lod distance compute.

Ideas for tutorials:

Features:

    • Area Lights:
      • It is better to use seamless textures for diffuse
      • Make a tuto for render to texture (eventually with texts)
      • Doesn't work in orthographic view

    • Parallax:
      • Put the tutos I made in the release notes on the website videos chain [webmaster is looking for video support on site]
      • Doesn't work in orthographic view


    • BL_Texture API:
      • Sub Rubricks represent ideas that we want to show in our tutos...
    • Constant Materials:

    • Soft Particles:

    • PCF Shadows / Static shadows also and API:

    • New Event system:

    • LOD API:

    • 2D filters API:

    • Python Components:

    • Geometry Instancing:

    • BindCodes:

    • Mesh Batching: Tuto or demo file is really important I think because the feature is awesome but I don't understand it enough to do a tuto
    • Frustums and culling: reduce a maximum lights frustum to avoid intersections for example. New approach to design the scene

Discussions:










C++ programming documentation

Github C++ documentation