UPBGEĀ Documentation




UPBGE now support encryption functions needed for BPPlayer.

See also: adc26b2.

Vector math material node

Two vector operators are added into the vector material node, they are Reflect and Multiply. The last one simply gives a vector with the multiplied components of the input vectors. The first operator return the reflect vector where the first vector is the incident vector and the second vector the normal vector.

The UI of these two new operators is pretty simple:

See also: 61e0592.

Texture material node lod bias

Texture node now offers a lod bias input value. The lod bias is used to simulate a blur or to correct a too higher mipmapping. The node also lets the user uses a texture for the lod bias to create various blurred zones.

The UI of the node is now:

See also: 61e0592.

Time material node

Time can be accessed in game thanks to the time node. This node offers the time since the game start with the time scale applied to it. It's UI looks like:

See also: d6c42b7.

Dynamic environment light energy

Environment lighting energy is now dynamic and can be set in python thanks to:


See also: bge.types.KX_WorldInfo.envLightEnergy and db1da8d.

Mouse over sensor ray mask

As ray cast sensors, mouse over sensor has a mask property which select the set of objects to test for ray cast. This set contains the objects which collisionGroup & mask returns true.

The sensor UI now looks:

See also: 5fa5a4c.

Override culling camera

The user now have the possibility to debug the scene culling by setting a camera as the unique camera used for culling in a scene, this is called override culling.

Camera can be set to override from UI with the option of the name in the Camera panel under Frustum Culling:

This can also be done in python thanks to:
KX_Scene.overrideCullingCamera = camera

Example of scene debug:

See also: bge.types.KX_Scene.overrideCullingCamera and cc1a425.

Text object culling bounding box

Text object are now using a culling bounding box, so they can be culled to optimize a scene render. Their culling box is accessible as the other objects: KX_GameObject.cullingBox.


See also: 425b8e1.

Time scale

The frame time scale value is now exposed in both python and UI under the scene panel:


See also: a819112.

Full filter render to custom off screen

Previously the last filter was forbidden to render to its custom off screen because we rely on this last filter to copy the final filter image to the screen. Now this restriction is erased.

See also: addf9dd.

Empty mesh warning

Materials used in a mesh but without any polygons using it are introducing performance decrease because of the material update. Now a message warns the user of this situation:


See also: e7bcf5d.

Keyboard sensor return key in text property

If a keyboard sensor is writing to a text property the return key as now the effect to put a new line. This allows to add lines manually to a property used by a text object.

See also: 722c7ee.

Scene text and camera lists

Previously the object list in KX_Scene for text objects and camera objects were incomplete, only the used or active objects were put in these lists. To have a consistent behavior with the light list, these lists now contains all the text or camera objects in the whole scene, active and inactive.

See also: 5e3c9c4 and a73b56b.

Clean up and refactors
- Allow inlining moto functions. (see 84171aa)
- Implement OpenGL queries. (see 226e849)
- Cleanup option and flag management in KX_KetsjiEngine. (see 9e846ac)
- Increase display of debug options menu. (see 4fb6d3e)
- Implement CM_RefCount. (see b14ecaa)
- Refactor non bullet culling management. (see 7ca8423)
- Refactor stereo render management. (see d1a43fb)

Bugs fixed
- Avoid copy matrix on itself in ray test object transform computaton. (see d42dcad)
- Fix negative text size. (see 533ea7a)
- Replace tuple by vector for KX_MouseActuator/KX_LightObject/KX_GameObject python functions. (see d5cb769)
- Raise error for invalid bindCode in KX_2DFilter.setTexture. (see 7d057dc)
- Use texelFetch instead of texture2D and textureSize for depth transparency. (see b97467d)
- Fix add of armatures in animated object list. (see 60d8ee8)
- Disable depth testing and write for filters. (see 863e4b5)
- Fix non-constant material and environment lighting. (see 5d62fb8)
- Fix duplication of display array bucket with shared storage info. (see 90933f2)
- Fix windows blenderplayer white loading background. (see ebc91ed)
- Fix libloading of 2d filter actuator. (see d06901e)