12 September 2017
Xenko 2.1 introduces local reflections. When you enable this post effect, the scene is reflected in glossy materials.
You can enable and customize local reflections in the graphics compositor on the post effects properties.
For details, see Local reflections.
Xenko 2.1 includes a clear-coat material template that uses physically-based rendering to simulate vehicle paint.
Clear-coat shading has several advantages over creating the effect manually with material layers:
You can add a predefined clear coat material from the Asset view under Add asset > Material.
For details, see Clear coat shading.
You can now render thin glass materials such as windshields. The diffuse color controls the tint of the glass and how much light is blocked (darker colors block more light).
You can add a predefined Glass material from the Asset view under Add asset > Material.
You can now use light shafts with any kind of light that casts shadows (ie point lights, directional lights, or spot lights). You can also use them with multiple shadow cascades.
Additionally, Game Studio now displays light shaft bounding volumes in the scene editor, so you can easily see the areas where light shafts are created. To show or hide navigation light shaft bounding volumes, in the scene editor toolbar, open the gizmo options menu and use the Light shaft bounding volumes checkbox.
The LightShaftComponent settings have been simplified and now have settings to control quality and performance.
For details, see Light shafts.
Xenko now supports streaming for textures. This significantly decreases the time it takes to load a game or scene, uses less memory, and makes your game easier to scale.
Streaming is enabled for textures by default. You can find the option in the texture properties under Format.
You can also set the global Streaming settings in Game settings.
For details, see Streaming.
You can now set which render groups a camera renders under Graphics Compositor > Entry points > Render masks. For example, you can have a model be visible to Camera A but invisible to Camera B.
For details, see Render groups and masks.
The Game Profiler script now displays more information and is easier to use.
You can now:
set parameters in Game Studio:
For details, see Profiling.
You can now display debug text at runtime. For more information, see Debug text.
The input system has been rewritten to track different input devices and allow for better extensibility.
IMouseDevice, IKeyboardDevice, IGameControllerIGamePadDevice replaces the gamepad functionality, with support for XInputIGameControllerDevice allows access to numbered buttons/axesKeyEvent now has a RepeatCount member, indicating how many times the key has been repeated while being held downFor details, see Input.
To support graphics functionalities on every platform, we've implemented missing features for the DirectX 12 rendering backend:
For more details, see the Changelog below.
Fresnel describes how light is reflected depending on the angle the material is viewed from. Typically, high angles are more reflective.
Previously, Xenko used an imprecise polynomial approximation to compute the fresnel for environment lighting (such as cubemaps), resulting in a bigger-than-expected white outline. Xenko now defaults to a precomputed BRDF environment lookup texture that matches our default lighting equations (GGX Schlick). This produces much more accurate rendering.
The documentation is now available in Japanese. To switch languages, use the Language button in the top-right of the documentation site.
PointerState to PointerEventTypePointerEventType:
Down has been renamed to PressedMove has been renamed to MovedUp has been renamed to ReleasedCancel has been renamed to CanceledOut has been removed; use Canceled insteadInputManager.ActivatedGestures to InputManager.GesturesSensor.IsSupported to InputManager.Sensor != null (where Sensor is the name of the sensor you're checking)HasDown/Pressed/ReleasedMouseButtons() functions on the InputManager are now propertiesGetGamePad(); use IGamePadDevice.State to acquire a gamepad state
> To obtain a gamepad, use InputManager.GamePads, InputManager.GetGamePadByIndex(index) or use the InputManager.DeviceAdded/Removed eventsGamePadState.IsConnected; use the InputManager.DeviceAdded/Removed events or check the value returned by InputManager.GetGamePadByIndex(index) != nullIsPadButtonDown/Pressed/Released() to the IGamePadDevice as IGamePadDevice.IsButtonDown/Pressed/Released()SetGamePadVibration() function to the IGamePadDeviceInputManager.LockMousePosition() no longer automatically hides the cursor; use IGame.IsMouseVisible for thisPointerEvent.PointerType; use PointerEvent.Device is IMouseDevice to check if the event came from a mousePointerEvent.IsPrimaryPointerId on PointerEvent to IdState on PointerEvent to EventType and its type to PointerEventTypeKeyEvent.Type; to check if this was a pressed or released event, use the boolean KeyEvent.IsDownMouseWheelDelta is now -1 or 1 per scroll unit instead of -120 or 120MultiTouchEnabled on the InputManager; multi-touch is always enabledExtinctionFactor and ExtinctionRatio to simplify the light shaft componentDebugConsoleSystem to DebugTextSystemRenderStageSelector select all entity groupsEnable device-specific builds is on (set in the project properties), it's not possible to debug game code. To speed up development, manually select the architecture of your device from the Advanced tabSceneCameraRenderer to cull entities per cameraDithering combobox and a Quality sliderIsAlphaCutoff option in sprite componentTexture to swap the content of two texturesAbsoluteMousePosition information to the InputManger.(1,1,1)GraphicsDeviceChildSceneComponent classIsEnergyConservative now properly taken into account