Skip to content

Release notes version 0.2.5

AC-Panda edited this page Aug 29, 2021 · 26 revisions

true

Changes in update 0.2.5b

New 2D filter "Outline"

The new 2D filter highlights the silhouette of an object which is stated with render attachments and material nodes. Here is a test blend to check it out: Tutorial_Outline_shader_Upbgeupdated.zip

Use the up-to-date dshow format instead of death vfwcap format for camera capture

Now the camera capture uses dshow up-to-date format

Allow changing anti aliasing in game

The new python functions getAntiAliasing and setAntiAliasing are implemented they both permit to read and set the anti aliasing level. Warning: Setting the level implies recreating the off screen which can be slow.

New getGraphicsCardVendor python function

Very useful to activate filters or other things depending on whether the game user have a graphic card or another.

Add a dispose method called when component is destroyed

This method is optional

Bugfixes

  • Recover "ping pong" actuator behaviour
  • Fix BL_Texture set bindcode not working
  • Fix Child position for slow parent
  • Fix for normals were not updating with shape key animations
  • Fix continuous activation for mouse actuator
  • Fix last toblock error in Blenderplayer
  • Restore GLSL material settings at GE exit
  • Fix for python hitMaterial attribute
  • Fix occluder for invisible objects
  • Fix spawn navmesh via addObject from another layer
  • Fix wrong projection matrix used by texture renderers when main
  • Fix for ATI/AMD graphic cards hidden "Out of Memory" issues.
  • Fix parsing of KX_PythonComponent names
  • Fix for update animation in KX_WorldIpoController
  • Fix for mouse sensor "movement"
  • Fix for setting worldTransform and localTransform
  • Fix for crash when we use Log toggle without any text output

New Features

Basic-PBR shading

A basic PBR system was introduced where 3 new shaders were included: Burley BSDF and Lambert Custom BSDF for diffuse and Optimized GGX BSDF for specular. Also, there is a new check under Shading panel for “energy conservation”.

true

Additionally, 2 new sliders were included under texture influence panel (roughness and metallic).

true

And all this was also reflected under node editor in material shader.

true

LOD mipmap for Reflection textures use TextureCubeLod now for better blurring.

Here below you can see 2 examples from Bianca Mello (Thanks!!)

true true

Render Attachments

true

In the purpose of complex filter, data from the rendering other than the final color or the depth could be needed in filter like space reflection or ambient occlusion. The obvious one is the view normal, but any kind of data could be interesting passing from the albedo or diffuse to a debug color for screen ray cast.

To expose such feature to the user, first a list of attachment need to be defined and secondly a way to output to these from simple material or node material.

The attachments are to the number of 7, because the 8th is the first one dedicated to the final color. The UI is defined in "Render" panel under "Attachments" sub panel. A list of 7 items is exposed and the user can add an attachment or remove one from any item, the items have four properties, the name (only for debug), the type : either custom, normal or albedo, in case of custom the properties size and HDR are exposed, they both select the size of data into the attachment texture and it's precision type.

Each GPU material is now tracking 8 out links, the first one is the same as the previous only out link and the other match the extra attachment. They are all iterated in codegen_call_functions to generate the GLSL lines for "gl_FragData[i] = ", a out link is registered using the function GPU_material_output_link.

The attachment type "custom" is dedicated only for node materials where any kind of data could be output to a special node. This node is named "Output Attachment" and has only one input and a property for the index of the attachment, this node is responsible of registering the output link. The other attachment types "normal" and "albedo" are detected in GPU_shaderesult_set and generate link for the view normal and the material diffuse (including vertex color and textures) multiplied by the object color.

From the game engine side, the attachment info are converted into LA_Launcher and put inside RAS_ICanvas, this same class is now responsible of owning and creating the offscreens, by doing this the canvas can also detect properly a resize and recreate the offscreens. Other than that the function are equivalent, GetOffScreen is now called from RAS_ICanvas instead of RAS_Rasterizer.

The attachments are readable from any filters defining the sampler uniform "bgl_DataTextures[7]", this uniform is bind as well as other uniforms in RAS_2DFilter::BindUniforms and the attachments textures in BindTextures/UnbindTextures.

Because GPUOffScreen is not anymore used and is less flexible than hand configuration of a frame buffer, their sources are restored to the blender ones.

Example file: ge_render_attachment.zip

Press key 1 or 2 to select the albedo attachment or the custom attachment, the default one if view normals.

Procedural textures added in node editor

true

A new category called "Patters" was added in the node editor. Inside this category will be a lot procedural texture nodes.

FXAA added to the Antialiasing menu

true

With this new option MSAA and FXAA antialiasing methods are included by default

Expose parallax component for material texture

true

Previously parallax node was able to select an other texture component than alpha thanks to a enum option. This option is ported to material texture and so visible in material texture parallax panel. The value is defaulted to alpha for versioning and new textures.

Restore Object info node

true

Previously the object info node was doing nothing directly by the fact that GPU_material_bind_uniforms was using nullptr for the last argument corresponding to the float array of object info.

The pass indices used by the object info is stored either in the blender material and the game object under the same variable m_passIndex. The object is coppying this value to the mesh user and BL_BlenderShader::Update is called with the material pass index as argument and inside it get the object pass index from the mesh user. These information are used to set the object info and the random value is computed from the hash of the mesh user client object, a per object value.

The pass index is exposed in python too under attributes:

KX_BlenderMaterial.passIndex
KX_GameObject.passIndex

Example: ge_pass_index.zip

Revert Bullet multithreading

Due to the unstable result of multithreaded bullet this change introduced in the previous version 0.2.4 has been reversed. We save the code to add it in future releases when it is more polished.

Implement color properties in python components.

Previously the user was obligated to use a 4d vector to simulate a color, now using mahtutils.Color will automatically define a color property in UI.

The type CPROP_TYPE_COL3 and CPROP_TYPE_COL4 are used to define component properties targeting 3 and 4 channels mathutils.Color. mathutils.Color can now optionally support the alpha channel by passing a four elements tuple to its python constructor or passing the size to the Color_CreatePyObject* functions.

Various

  • Allow KX_LibLoadStatus.onFinish to call python method. (see 0da4cda)
  • Support backtrace file writing for Blenderplayer. (see 344493c)
  • Allow convex hull shape reinstancing. (see 7d33328)

Refactor and Clean ups

  • Make Python 3.7 by default in MacOSX. (see 7013837)
  • Generalize override camera projection matrix. (see a2de330)
  • Simplify camera viewport. (see 5cf021d)
  • Manage per eye projection and modelview camera setting. (see 3da78e0)
  • Code refactor to work with OpenGL compatibility mode in MacOs. (see be25fdd)

Bug Fixes

  • Fix to avoid to spawn sound actuator when no sound is loaded. (see 3ba7dcb)
  • Fix for Mouse Actuator. (see 869c8ec)
  • Fix for Depth transparency. (see 4ded0a6)
  • Fix for Vsync setup. (see 9ec291e)
  • Fix conversion of realtime maps. (see 1e764cb)
  • Fix "value in inputs[x].[queue/values/status]". (see 6f82696)
  • Fix for Windows x86 UPBGE crashing at start. (see c79a076)
  • Fix property and file name string size for components. (see facaf72)
  • Fix object render settings for batching groups. (see 014bb4c)
  • Fix mesh polygon count. (see 80827a5)
  • Fix UniformInfo < operator. (see 30ddd0c)
  • Fix batching UVs and colors. (see 1d09933)
  • Fix modifier deformer normal recalculation. (see a88fa48)
  • Fix for mouse actuator return value. (see 60d29a4)
  • Fix KX_SteeringActuator.navmesh assignement. (see e39cfc5)
  • Fix duplication of navigation mesh objects. (see 9eff631)
  • Fix header for signal enum. (see a31c9c0)
  • Fix MSVC build converting from LPVOID to LPCSTR. (see df14276)
  • Fix geometry instancing mesh sort. (see b56449c)
  • Fix ray cast mask compilation warning. (see 157077f)
  • Fix frame buffer copy shader. (see d491c4f)
  • Fix shape replacement for character. (see 3129f59)
  • Fix KX_Mesh.transformUV with invalid UV layer. (see 732ba41)
  • Fix components of group instances. (see 1522a0f)
  • Fix LibFree of library created with LibNew. (see b244e52)
  • Fix keyboard sensor second modifier. (see 61d044b)
  • Make selected text symbols visible
  • Fix ReplacePhysicsShape default return value. (see 527624f)
  • Fix python reference counting for KX_GameObject.collide(obj). (see 7176714)
  • Fix camera frustum update. (see 2b27272)
  • Fix camera user viewport. (see dce9571)
  • Repair backface culling. (see 50e70a0)
  • Fix collision sensor drawing in debug builds. (see 32cb861)
  • Fix/tweak default theme. (see 23ef1fe)
  • Fix ImageRender modelview matrix. (see 5431ec7)
Clone this wiki locally