Planar reflection and refraction
Planar reflection and refraction is a technique simulating the reflection or refraction of a mirror (plane) using a screen based rendering of the scene giving the feeling of infinite mirror.
The render method is used when selecting mapping to
PLANE in the texture panel under the
Environment Map sub panel. When this option is selected the UI is generally the same as for cube maps excepted the new option named
Rendering Mode. This option is used to choose between reflection and refraction.
Because there's two kind of environment maps,
BL_Texture.cubeMap is renamed
BL_Texture.renderer. This attribute return a
KX_CubeMap or the new
KX_PlanarMap. These both classes use a common class named
KX_TextureRenderer which contains all the attributes of the previous
KX_PlanarMap have a new attribute:
This attribute is the planar normal relative to the viewpoint object. Else the normal is the Z axis of the viewpoint object.
See also: KX_TextureRenderer, KX_PlanarMap, BL_Texture.
See also: acdbcc2
Text editor improvement
The GLSL text editor syntax coloration is improved to highlight GLSL basic funxtions as
Custom filter off screen
2D filters can now render to a custom off screen instead of the system off screen used as input textures for the next filter. This method is used to share the work made by a filter into multiple other filters by storing its result.
This off screen is created and owned by filters calling the function:
KX_2DFilter.addOffScreen(slots, depth=False, width=-1, height=-1, hdr=bge.render.HDR_NONE, mipmap=False)
Once this, the off screen can be accessed through
KX_2DFilter.offScreen, the returned value is a
This class contains the bind codes for the attachments (colors and depth) and the dimensions of the off screen.
Finally, the bind code are passed to the next 2d filters using the function
filter0 = scene.filterManager.getFilter(0)
filter1 = scene.filterManager.getFilter(1)
filter1.setTexture(0, filter0.offScreen.colorBindCodes, "texture")
Sample blurring to a custom off screen and mipmapping blurring to screen.
See also: KX_2DFilter and KX_2DFilterOffScreen.
UI 2d filter mipmap
The user can select to generate mipmap levels for the rendered textures passed to a filter by checking the option
Use MipMap in the 2d filter actuator. Else the python API offer a attribute named
Lod factor in UI
Lod factor is accessible into the UI for cameras, objects and texture renderers (cube map and planar map), this value is put under the
Level Of Details panel placed into the object panel for objects and in the camera panel for camera, or in case of texture renderer into the
Environment Map sub panel.
The lod factor is used to scale the distance between the object and the camera to simulate a camera zoom.
Viewport mist option
Mist render can be disabled into the viewport thanks to an UI option named
World Mist added in the
Display panel showed when pressing the key T.
Resize cube map button
With the implementation of the reflection and refraction, real time texture can not assume that the image size is always respecting the cube map ratio. So the resize became optional and is applied when pressing the button
Resize in the texture panel, else the size of the image is displayed with a red background if it is invalid. These two features are used only in case of cube maps.
Improve game controller detection
Some joysticks are not natively supported because they miss in the database used for the mapping of the joysticks. Even that, the user can specify the mapping into a console environment variable and now into a file named
gamecontrollerdb.txt placed in the current directory of the blender or the blenderplayer.
The file should follow the format:
See also: d735cc2
Armature object constraints
Duplication of an armatures with their constraints was an old bug in BFBGE, this bug is now fixed in UPBGE. So if a group object, containing an armatures and the objects used for the constraints of the armature, is duplicated, all the objects used as targets by the constraints will be re-linked correctly and will became independent of the other target objects.
See also: 222220b
Clean up and refactors
- Refactor rasterizer off screen management. (see aa4b6a0)
- Use pimpl idiom for RAS_OpenGLRasterizer. (see 849d065)
- Move debug draw function into RAS_IRasterizer. (see 385f613)
- Use MT_Vector for RAS_IRasterizer::Set[AmbientColor/Fog] arguments. (see e6eaa10)
- Temporarly remove parallax uv shift option. (see b6e7205)
- Restore UpdateIPO with mutex. (see 2b3405a)
- Replace NULL with nullptr. (see 712a0e2)
- Fix bounding box of duplicated game objects. (see cc1f990)
- Fix upbge version check. (see 75bf230)
- Disable automatic warning in debug mode. (see b983699)
- Avoid merge object of a batch group into an other batch group. (see d1beb87)
- Check for invalid id.lib in GetFontId. (see fd8ef93)
- Fix missing switch case break for blenderplayer 'a' option. (see a68564c)
- Fix string to float conversions execptions. (see 668ccf0)
- Add a check for empty value in property sensor. (see 72c54dd)
- Fix loading of font for object in linked libraries. (see 6f8c7af)
- Fix buffer allocation in IMB_allocFromBuffer. (see 9c5581b)
- Fix place of keyboard.active_events deprecated message. (see 419566e)
- Fix wireframe color. (see 16914be)
- Fix replication of bounding box. (see d23520c)
- Set duplicated armatures in animated object list. (see 08e344d)
- Fix documentation for deprecated joystick.[hatValues/numHats]. (see ea680e3)
- Fix projection matrix update in ImageMirror. (see 80fde92)
- Remove BLI_assert in RAS_Shader::RAS_Uniform constructor. (see 983a224)
- Fix python API documentation of KX_2DFilter.setTexture (see e9da7af)
- Fix parent windows id passed to createWindow. (see 33cc843)
- Fix tSDL_GameControllerAddMappingsFromRW declaration. (see 82f77aa)