Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

20. января 2017

 

Vulkan is the successor API to OpenGL and takes things a lot closer to the GPU.  The flipside to this, a lot more is left to the developer to implement.  nVidia have release VkHLF, the Vulkan High Level Framework, to help developers deal with some of the grunt work involved with using Vulkan.  Unlike Vulkan-HPP, VkHLF does add overhead to your code, so there is a performance cost to be paid.  Here is the description of VkHLF taken from the Github readme:

Vulkan High Level Framework

VkHLF is an experimental high level abstraction library on top of Vulkan. It adds features like transparent suballocation, resource tracking on the CPU & GPU and simplified resource creation while staying as close as possible to the original Vulkan API. In contrast to Vulkan-Hpp, which was carefully designed to be a zero-overhead C++ abstraction for Vulkan, this library adds significant higher-level functionality. Even so, it has been designed for high-performance, but it can cost performance relative to native Vulkan if not employed with the intended usage patterns.

Since this project is in its early stages and under heavy development expect bugs and interface changes for a while. It should not be used for production code yet!

 

As the last line says, this is an early stage project and should not be used for production code.  You can check out some samples here.  Even though it helps with some of the complexity, the Hello Vulkan example is still nearly 400 lines of code!

GameDev News

18. января 2017

 

Today marked the release of two important Haxe gamedev libraries, OpenFL and Lime.  Lime is a low level API similar in scope and function to SDL or SFML, providing access to the underlying hardware.  OpenFL is layered on top of lime and attempts to provide a Haxe version of the Flash APIs, including gaming APIs.

 

Changes to OpenFL 4.5.3:

  • Updated for Lime 3.6
  • Updated AGALMiniAssembler to a fresh port of Adobe's last release
  • Added missing Event.FRAME_CONSTRUCTED event
  • Added Dictionary<Object, Object> support
  • Improved support for textField.setTextFormat
  • Updated preloader to use Event.UNLOAD instead of Event.COMPLETE to unload
  • Updated SWFLite library to preload with the parent application
  • Fixed support for slashes in SharedObject names
  • Fixed support for preventing default on keyboard events
  • Fixed a regression in displaying stack traces on crash errors
  • Fixed text measurement on IE 11
  • Fixed return value when scaleX or scaleY is negative
  • Fixed issues where new ByteArray may have values other than zero
  • Fixed an issue with SWFLite assets when using the "generate" option
  • Fixed a possible null crash when updating object transforms
  • Fixed support for garbage collecting Sound when SoundChannel is finished
  • Fixed problems with using textField.appendText
  • Fixed the default template for HTML5 when multiple projects are embedded
  • Fixed wrong colors when values were larger than expected
  • Fixed an issue with needing clearRect on CocoonJS

Changes to Lime 3.6.0:

  • Moved "lime.audio" to "lime.media"
  • Added Vorbis bindings under "lime.media.codecs.vorbis"
  • Added lime.ui.ScanCode, with conversion support to/from KeyCode on native
  • Added tool support for the "--no-output" argument
  • Migrated from NFD to tinyfiledialogs for better dialog support
  • Made window.close cancelable on desktop platforms
  • Updated libjpeg to 9b
  • Updated howler.js to 2.0.2
  • Improved support for Haxe 3.4
  • Improved support for progress events while preloading
  • Fixed force install when deploying to Android (API 16+ devices)
  • Fixed an invalid state when returning from background on Android
  • Fixed playback of a single audio buffer multiple times on HTML5
  • Fixed initial volume level in AudioSource on HTML5
  • Fixed a regression in the default architecture list for iOS
  • Fixed merging of multiple tags in project files
  • Fixed a possible crash when retrieving OpenGL strings
  • Fixed the default template for HTML5 when multiple projects are embedded
  • Fixed support for non-preloaded assets on HTML5
  • Fixed support for image.copyChannel on HTML5 when using WebGL
  • Fixed support for command-line arguments with "lime rebuild"

 

You can read more about both releases here.

GameDev News

18. января 2017

 

In our previous tutorial we covered lighting in our ongoing Babylon Tutorial Series but the objects in our game are still remarkably drab.  A big part of this is the lack of materials applied to them.  In this tutorial we are looking at using the StandardMaterial which handles all the grunt work for you.  You can think of StandardMaterial as a container for several different kinds of textures (diffuse, opacity, etc. ) that can be applied to an object.  It also has some built in attributes such as diffuse (color), emissive (self lighting) and more.  Let’s start straight away with an example that we covered in a previous tutorial.  Applying a simply wireframe to our cube:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../Common/Lib/babylon.max.js"></script>

    <style>

        #canvas {
            width:100%;
            height:100%;
        }
    </style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
    window.addEventListener('DOMContentLoaded', function(){
        var canvas = document.getElementById('canvas');

        var engine = new BABYLON.Engine(canvas, true);

        var createScene = function(){
            var scene = new BABYLON.Scene(engine);
            scene.clearColor = new BABYLON.Color3.White();
            var box = BABYLON.Mesh.CreateBox("Box",4.0,scene);
            var camera = new BABYLON.ArcRotateCamera("arcCam",
                    BABYLON.Tools.ToRadians(45),
                    BABYLON.Tools.ToRadians(45),
                    10.0,box.position,scene);

            camera.attachControl(canvas,true);

            var material = new BABYLON.StandardMaterial("material1",scene);
            material.wireframe = true;
            box.material = material;

            return scene;
        }

        var scene = createScene();
        engine.runRenderLoop(function(){
            scene.render();
        });

    });
</script>
</body>
</html>

 

When you run it:

image

 

Simple enough.  We create a StandardMaterial, passing in it’s identity and the scene to create it in.  We set the materials wireframe property to true, then apply the material to our object’s material property.  Note each object can only have a single material, although a compound material exists if you need to mix multiple materials together.  Now let’s look at a slightly more colourful example, this time using more of the built in properties of StandardMaterial.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../Common/Lib/babylon.max.js"></script>

    <style>

        #canvas {
            width:100%;
            height:100%;
        }
    </style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
    window.addEventListener('DOMContentLoaded', function(){
        var canvas = document.getElementById('canvas');

        var engine = new BABYLON.Engine(canvas, true);

        var createScene = function(){
            var scene = new BABYLON.Scene(engine);
            scene.clearColor = new BABYLON.Color3.White();
            var box = BABYLON.Mesh.CreateBox("Box",4.0,scene);

            var camera = new BABYLON.ArcRotateCamera("arcCam",
                    BABYLON.Tools.ToRadians(45),
                    BABYLON.Tools.ToRadians(45),
                    10.0,box.position,scene);

            camera.attachControl(canvas,true);

            var light = new BABYLON.PointLight("pointLight",new BABYLON.Vector3(
            5,5,0),scene);
            light.diffuse = new BABYLON.Color3(1,1,1);



            var material = new BABYLON.StandardMaterial("material1",scene);
            material.diffuseColor = BABYLON.Color3.Blue();
            material.emissiveColor = BABYLON.Color3.Red();

            material.specularColor = BABYLON.Color3.Red();
            material.specularPower = 3;
            material.alpha = 1.0;
            box.material = material;

            var plane = BABYLON.Mesh.CreatePlane("plane", 10.0, scene, false, 
            BABYLON.Mesh.DOUBLESIDE);
            plane.material = new BABYLON.StandardMaterial("material2",scene);
            plane.material.diffuseColor = new BABYLON.Color3.White();
            plane.material.backFaceCulling = false;
            plane.position = new BABYLON.Vector3(0,0,-5);

            return scene;
        }

        var scene = createScene();
        engine.runRenderLoop(function(){
            var material = scene.getMeshByName("Box").material;
//            material.alpha -= 0.01;
//            if(material.alpha < 0) material.alpha = 1.0;
            scene.render();
        });

    });
</script>
</body>
</html>

Running this example results in:

image

 

Here you can see we’ve set the diffuse, emissive and specular values of the cube.  I also created a plane so you can see the emissive value of our cube has no effect on it.  The diffuse property can be thought of as the colour in the traditional sense.  Emissive on the other hand is a value for an internal light of the material, there aren’t actually that many emissive parallels in the real world, but some mosses and a few creatures have an emissive property to them.  Specular color determines how external light sources interact with the surface.  If you look at the commented code in the main loop you will also see commented code affecting the alpha channel of the material.  Alpha can be thought of transparency, with a value of 1 being fully opaque, while 0 is fully transparent.

What the majority of people think of when they work with materials is textures.  Textures are simply images that are applied the surface of an object like virtual wallpaper.  There are different types of textures as well, some effect the color of a surface, others affect the transparency or normals.  Here is an example:

<script>
    window.addEventListener('DOMContentLoaded', function(){
        var canvas = document.getElementById('canvas');

        var engine = new BABYLON.Engine(canvas, true);

        var createScene = function(){
            var scene = new BABYLON.Scene(engine);
            scene.clearColor = new BABYLON.Color3.White();
            var box = BABYLON.Mesh.CreateBox("Box",4.0,scene);
            var camera = new BABYLON.ArcRotateCamera("arcCam",
                    BABYLON.Tools.ToRadians(45),
                    BABYLON.Tools.ToRadians(45),
                    10.0,box.position,scene);

            camera.attachControl(canvas,true);

            var light = new BABYLON.PointLight("pointLight",new BABYLON.Vector3(
            0,10,0),scene);
            light.parent = camera;
            light.diffuse = new BABYLON.Color3(1,1,1);


            var material = new BABYLON.StandardMaterial("material1",scene);

            material.diffuseTexture = new BABYLON.Texture("gfs.png",scene);
            material.bumpTexture = new BABYLON.Texture("gfs_normal.png",scene);
            material.roughness = 0.5;
            box.material = material;



            return scene;
        }

        var scene = createScene();
        engine.runRenderLoop(function(){

            scene.render();
        });

    });
</script>

 

And when you run it:

image

 

This example uses two different textures, a diffuse texture:

gfs

 

And a normal map:

gfs_normal

 

For more details on Normal Maps, check this video on Normal Map 101.  Somewhat confusingly, BabylonJS refers to normal maps as bump textures.  This only scratches the surface of the material and texture options available, you also have options like ambient, opacity, reflection, light and specular textures, but you will find they almost all work exactly the same way.

Programming , , ,

17. января 2017

 

Microsoft have just released a beta version of PIX, a performance tuning and debugging tool aimed at game developers.  Previously only available on XBox consoles, PIX is now available for Windows machines for games running Direct X 12.pixscreenshot

 

About PIX:

PIX on Windows provides five main modes of operation:

  • GPU captures for debugging and analyzing the performance of Direct3D 12 graphics rendering.
  • Timing captures for understanding the performance and threading of all CPU and GPU work carried out by your game.
  • Function Summary captures accumulate information about how long each function runs for and how often each is called.
  • Callgraph captures trace the execution of a single function.
  • Memory Allocation captures provide insight into the memory allocations made by your game.

For best results we recommend running PIX on:

  • Windows 10 build 14393 (Anniversary Update, aka RS1) with latest updates
  • 32 GB RAM
  • A Direct3D 12 GPU with the latest available graphics drivers.  PIX will not work correctly with older drivers!

See the requirements page for more information.

 

The beta is free and is available for download here.

17. января 2017

 

Unreal Engine have released a preview version of the upcoming Unreal Engine 4.15.  As is now normal with Unreal Engine point releases, this one is absolutely packed with new fixes and features.  Keep in mind this is a preview release for a reason, you should not be using it with production code.  Expect to encounter more than your regular share of bugs.  Details from the release notes:

 

  • Rendering Updates:
    • Finalized Texture Streaming Optimizations that were started in 4.13 and 4.14.
      • Textures used by non visible & hidden components are streamed with one less mips, as a prefetch.
      • Reducing time taken for the visible textures to stream in.
      • Reducing the CPU time taken by the streamer.
      • Mesh UV densities are now computed per material instead of per mesh. New data also takes into account lods. This resolved most issue were texture would appear low resolution. Also, there is now a wider texture streaming support from component, including particle systems and instanced meshes. That resolved other low resolution issues and sometime high memory consumption.
      • The texture streamer can now automatically fit to different memory budgets, without manual tweaks. The streamer will select which textures need to be reduced using different heuristics to minimize visual impact.
      • New visualization tools for debugging.
    • New Nodes have been added to the Material graph
      • Commonly request mathematics nodes: Sine, Cosine, Tangent, Arcsine, Arccosine, Arctangent, Arctangent2, ArcsineFast, ArccosineFast, ArctangentFast, Arctangent2Fast, Round, Truncate, Saturate
        • The nodes marked with the “Fast” tag will execute approximations instead of the real instructions. These can give a worthwhile performance improvement to materials but have input restrictions and precision tradeoffs.
      • PreviousFrameSwitch has been added to allow specific overrides for world-position offsets in complex materials used during motion vector generation.
      • Pre-Skinned Local Normal works in a similar way to the Pre-Skinned Local Position node added in the 4.14 release but returns the local surface normal for skeletal and static meshes. This opens the door to more local-space, mesh aligned effects or advanced use-cases such as writing dynamic surface data to a mask read-back in another material.
    • Metal support has been extended to use many of the new API & shader language features added by Apple in macOS 10.12 Sierra & iOS 10.
      • Enabling the new Metal v1.2 standard allows all Metal platforms to use Unordered Access Views in pixel shaders
      • Full support for Unreal Engine's tessellation features has been implemented
      • Experimental support for HDR rendering on Macs with an appropriate display built in
  • Sequencer Updates:
    • Animation Blending by weight is supported.
      • You can add weight by expanding each track, and key the value in the desired timeline
      • There is no limit to how many animations it can blend at the same time but as for full body animations, the weights will be normalized, so that it doesn’t under/over scale the mesh. For additive animations, the weights will be kept.
    • Audio volume and pitch curves have been added.
  • Blueprint Updates:
    • Cooking Blueprints to C++ is no longer an "experimental" feature.
      • This is enabled in the editor through your project’s Packaging Settings: Blueprints => Blueprint Nativization Method.
      • It can also be invoked by passing -NativizeAssets as a parameter to the UAT BuildCookRun script.
      • Generated source is saved as a plugin in your project’s intermediate folder, under: …\Intermediate\<TargetPlatform>\NativizedAssets
      • More information is available in the documentation.
    • Map & Set containers are now available in blueprints. They are a collection of items which guarantee they contain only unique items, with no repeating entries.
      • The Variable Type control is now a drop down, allowing you to select ‘Single Variable’, ‘Array’, ‘Set’, or ‘Map’. When ‘Map’ is selected a second drop down for the ‘value’ type appears.
      • For maps the following operations are available to blueprint users: Add, Remove, Find, Contains, Keys, Values, Length, and Clear.
      • Set supports: Add, AddItems, Remove, RemoveItems, ToArray, Clear, Length, Contains, Intersection, Union, and Difference.
      • Set and map variables declared in C++ can now be exposed to Blueprints.
      • NOTE: Replication of map and set properties is not yet supported in C++ or Blueprints.
  • Framework Updates:
    • A Raw Input plugin has been checked in to provide support in Windows for steering wheels, flight sticks, and other non-XInput supported devices.
      • All of the Vehicle templates and Vehicle Game* have been configured to work with the Logitech G920. (*Vehicle Game not yet updated for 4.15 Previews)
      • Adding new devices is as easy as setting up a configuration for them in the project settings or editing DefaultInput.ini. (Vendor and Product ID can be discovered from the driver properties)
      • We need your help! - After you successfully configure your devices (figuring out what axes represent brake, gas, steering wheel and necessary modifiers to represent brake/gas as 0 to 1 and the wheel as -1 to 1), please share your .ini settings back with us so we can ensure these devices work without additional setup in the future.
    • A Force Feedback Component can now be added to Actors and exist in the world. It can have attenuation properties to determine the intensity of the playback of the force feedback pattern based on the distance between the player and the effect. The attenuation properties can either be specified directly on the component or you can create a Force Feedback Attenuation asset in the content browser and reuse it for multiple components. Force Feedback Components can also be spawned into the World from blueprints in a similar way that audio, decals, and emitters can.
    • PhysX Vehicle Support is now an optional plugin. This makes it easy for games that are not using vehicles to exclude this feature and save disk space and memory. This work also adds several useful physics extension points to Engine (e.g. OnPhysSceneInit/Term, OnPhysSceneStep) to make it easier for other developers to write their own similar systems.
    • The Blendspace Editor has been overhauled with an updated UI and internal rework.
    • Save Pose Snapshot has been added to capture a runtime skeletal mesh pose in blueprints. Once the pose has been saved, you can use it in the anim-blueprint like any other pose, or save it to a variable.
    • You can Link a Curve to a specific Bone in the skeleton. This supports LOD and Layer Blending, and can be accomplished in the Anim Curves window.
    • Physics objects now have Mass Properties debugging visualizers to see center of mass and inertia tensor. (Show -> Advanced -> Mass Properties)
    • Gameplay Tags have been improved and are now fully supported. They are implemented by the GameplayTag structure in the GameplayTags module and are registered in a central dictionary, which can be accessed from the new GameplayTags project settings view. If you enable the “Import Tags from Config” option, tags can be added from the editor through the Gameplay Tag List on this page, or from the UI used to select tags. Once you have added Tag properties to your data, you can query them from either Blueprint or C++ and use them to change functionality. The BlueprintGameplayTagLibrary has several useful functions. To actually set up tags, add GameplayTag or GameplayTagContainer variables to your data or functions, then you can set the tags from selection UI.
  • Mobile Rendering Updates:
    • ES 3.1 / Metal / Vulkan editor feature level preview no longer experimental. This mode will emulate the feature set available to iOS Metal, Android GLES3.1 and Android Vulkan devices.
    • Mobile devices can now use Custom Stencil in post-processing materials. This requires MobileHDR option enabled and non-Mosaic device. To enable this feature in your project go to Project Settings -> Rendering -> Postprocessing and set ‘Custom Depth-Stencil Pass’ to ‘Enabled with Stencil’.
    • You can now disable shader permutations for lighting setups that your mobile game does not require. The settings available under Project Settings -> Rendering will reduced shader memory usage and App package size.
    • Android applications can now be packaged to support a third-party Graphics Debugger. You can choose from either the Mali Graphics Debugger or Adreno Profiler depending on your device’s GPU. Graphics Debugger options can be found in Project Settings -> Android. You first need to download and install these debuggers from the GPU vendor’s website, and they each require some small amount of additional setup to configure your device for debugging. Be sure to to follow the directions that appear after selecting the debugger type. Also note that if you package your app to support a particular GPU debugger, it may not function correctly when run on a device with a different GPU.
  • Editor Updates:
    • Reroute nodes have been added to the Material Editor.
    • Font Asset Improvements have been made to address issues with memory consumption and stability of Font assets using runtime-cached fonts. Font assets have been split in two: Font and Font Face.
      Font Face is now the asset that stores the font data, and these assets are simply referenced by the Font assets. This means that the same font data can be re-used for multiple font assets, or even multiple typefaces within a Font asset. Existing Font assets will automatically upgrade their internal font data into embedded Font Face assets during load. You can use the Font Editor to split these embedded assets out into real Font Face assets that may be edited and shared.
    • (Experimental) Content Hot-Reloading is available for testing. To enable it you need to go to your "Editor Preferences", and enable "Content Hot-Reloading" under the "Experimental" section. Once enabled all of the in-editor source control operations that affect assets will use content hot-reloading. You also gain a "Reload" option under "Asset Actions". This can be used to forcibly reload a package from disk.
  • Build Updates:
    • The codebase has been converted to a "include what you use" model, where every header includes other headers it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Existing game code can continue to include those files as before, but we measure the engine compiling 25-50% faster!
      • Every header now includes everything it needs to compile.
      • Every .cpp file includes its matching .h file first.
      • No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
      • No engine code explicitly includes a precompiled header any more.
  • Platform Updates:
    • New Location Services now provides access to GPS data for Android and iOS. A new OnLocationChanged delegate is available and Blueprint nodes are provided under Services->Mobile->Location.
    • Streaming audio for iOS has been implemented.
    • Remote notifications for IOS are now supported. This includes callbacks in the game for handling the notification as well as properly setting up all plist information needed by the application for the app store.
    • We have added support for ARM64 (AArch64) devices running Linux. Right now only boards with desktop GL are supported.
    • 'Launch On' to Remote Linux Machine from the Editor or UFE.
  • VR Updates:
    • The PlayStationⓇVR Aim Controller is now supported through the new AimController plugin. To activate, simply change the “Hand” value to “Gun” on your Motion Controller component.
    • (Experimental) Monoscopic Far Field Rendering for mobile VR is available for testing. With content that has many distant objects, this can benefit performance. To enable, select the checkbox under Project Settings -> Rendering -> VR. We don’t currently support both mobile multi-view and monoscopic far field simultaneously and mobile HDR needs to be disabled.
  • VR Editor Updates:
    • Updated Quick Menu and Radial Menu to quickly access editor functionality.
    • The new number pad menu appears when you click on an editable text field.

GameDev News

Popular Comments

Unity Release Patch 5.3.3p3
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon


11. March 2016

 

Unity have released patch 5.3.3p3 for their popular Unity3D game engine.  From the release notes, this patch changes:

Improvements
  • Global Illumination: When compositing the directional lightmap removed the clamping on the w-component of the generated pixels.
  • Win / OSX Standalone: Add -hideWindow command line option to launch standalone applications with the window hidden.
  • Windows Store: reduced the amount of linker warnings when building Il2CppOutputProject and using il2cpp scripting backend
Fixes
  • (762771) - 2D: Changing Rigidbody2D.gravityScale whilst a Rigidbody2D.MovePosition is in progress now works.
  • (765870) - 2D: Ensure Joint2D auto-configuration still works if joint is added from script
  • (763922) - 2D: Ensure that a TargetJoint2D added via script allows collisions with static colliders.
  • (764769) - 2D: Stop Rigidbody2D with Interpolation being placed at world origin for a single update upon start.
  • (770316) - Analytics: Fixed unreliable event sending (especially AppStart) on WebGL.
  • (755201) - Android/IL2CPP: Prevent a crash in the garbage collector when it attempts to scan a section of memory used for the code that may have been unmapped by the OS.
  • (738821), (758155) - Android: Added support for Vivante OpenGL ES 3 driver.
  • (712890), (771890) - Android: Fixed rendering on Vivante GPUs on Android 4.3 and older.
  • (772171) - Android: Fixed rendering artifacts when using native plugins and multithreaded renderer.
  • (772260) - Animation: Fixed a crash when animating lights using the Animation component.
  • (756463) - Animation: Prevent crashes when clips are null for animations extracted from asset bundles whose dependencies have not loaded.
  • (760684) - APIUpdater: Fixed AssemblyUpdater "Sequence contains more than one matching element" crash.
  • (743463) - APIUpdater: Fixed AssemblyUpdater crash upon assembly resolution failures.
  • (759142) - AssetBundles: BuildAssetBundles will switch back to the original Active Build Target when finished.
  • (774356) - Audio: Disabled sound manager watch dog.
  • (771882) - Core: Fixed an issue asynchronously loading a prefab with a large amount of assets.
  • (none) - Core: Fixed some errors with recently deleted objects (in WWWDelayCall; ClearPersistentDirty call; editor CEF integration).
  • (768849) - Global Illumination: Fixed crash in some scene loading scenarios.
  • (767161) - Global Illumination: Fixed light probes not being used anymore in Standalone when a scene without light probes was loaded with Additive mode.
  • (751599) - Global Illumination: Fixed multi-scene baking.
  • (663992) - Global Illumination: Fully repaint inspectors after baking reflection probes; some previews were not updating before.
  • (542251) - Graphics/DX11: Fixed compute shader resource hazards found in certain cases when binding the same resource SRV and UAV on pixel and compute shader stages.
  • (none) - Graphics: Added profiler markers on async texture loading waits.
  • (752613) - Graphics: Fixed "Trying to reload asset from disk that is not stored on disk" error when non-persistent objects are attempted to be reloaded from disk.
  • (772013) - Graphics: Fixed .ogv movie files with stream markers beyond 16kb not imported correctly.
  • (752613) - Graphics: Fixed a synchronization problem that was causing texture data not to be properly updated when changing quality settings at runtime.
  • (75508), (726067) - Graphics: Fixed an issue where GrabPass could get source texture wrongly offset in some cases.
  • (772958) - Graphics: Fixed crash in SetGpuProgramName which could happen when the program isn't supported by the target graphics hardware (found on Android) .
  • (765928) - Graphics: Fixed MovieTextures sometimes being black in Mac Standalone (64 or Universal builds).
  • (506089), (535548) - Graphics: Prevent Projectors from accepting invalid clip planes from a script.
  • (770081) - IL2CPP: Avoid crash when constructing error message.
  • (774085) - IL2CPP: Correctly sort unsigned integers via the Array.Sort method.
  • (773713), (768010) - IL2CPP: Prevent generated C++ code from failing to compile with errors like "error: use of undeclared identifier 'L_5'" in some cases.
  • (762883), (746313) - IL2CPP: Properly marshal formatted classes
  • (771835) - IL2CPP: Properly parse binary text assets.
  • (775362) - iOS Metal: Fixed performance regression when doing in-frame clear (GL.Clear or command buffer Clear).
  • (775575) - Linux/GLCore: Fixed one more instance of "flickering".
  • (none Linux: Fixed AA in non-upscaled windows, force window recreation when requirements change for player window attributes.
  • (767741) - Mono: Added IPv6 support on Windows.
  • (775226) - Networking: Fixed an issue where ack didn't reset with connection resetting which lead to reliable traffic stale.
  • (775222) - Networking: Removed annoying "Attempt to send to not connected connection" message.
  • (775225) - Networking: Removing "no free events for message" as annoying.
  • (772167) - OpenGL Core/ES: Fixed scalar uniform handling in the shader translator.
  • (772434) - OpenGL Core/ES: Fixed wrong shader code generation when redirecting variables, was affecting FastBloom shader.
  • (767343) - OpenGL Core/ES: Shader compiler, fixed invalid uniform access in certain corner cases.
  • (756028) - OpenGL Core/ES: Workaround for Nvidia shader compiler bug on OS X, affecting SSAO shader.
  • (775428), (776470) - OpenGL Core: Fixed fullscreen mode when not using native resolution and using MSAA on Mac AMD GPUs.
  • (773476), (775275) - OpenGL Core: Fix twitching and incorrect rendering with skinning and UI components on GLCore + Mac + NVIDIA.
  • (774558), (774216) - OpenGL Core: Fixed fullscreen MSAA support with linear color space rendering.
  • (762687) - OpenGL Core: Fixed Graphics API switching to OpenGL.
  • (760112) - OpenGL Core: Fixed misleading texture decompression warning when using OpenGL ES emulation.
  • (760196) - OpenGL Core: Fixed occasional game view flipping with image effects in the editor.
  • (757536), (757866) - OpenGL Core: Fixed stretched game view with some image effects in Mac editor.
  • (768916) - OpenGL ES: Fixed non-shadowmap depth textures on some devices.
  • (767419) - Particles: Fixed error message due to default bounding box.
  • (773673) - Particles: Fixed a culling regression, when particle systems leave the screen and come back.
  • (776187) - Physics: Fixed a PhysX crash issue in PxsCCDContext::updateCCD experienced by some VR applications.
  • (758264) - Profiler: Fixed crash when adding data from thread which was started during a frame.
  • (770225) - Profiler: Fixed hang when EndSample did not have a matching BeginSample.
  • (none) - Scripting: introduced global define UNITY_5_3_OR_NEWER, which can be used for conditionally compile code that is compatible only with Unity 5.3 or newer.
  • (none) - Shaders: Added support to the compute shader compiler to handle bools inside structures.
  • (766806) - Shaders: Fixed Standard shader in some rare cases outputing NaN as pixel shader result.
  • (761152) - Shadows: Fixed shadows disappearing for some off-screen shadows casters.
  • (none) - Substance: All inputs are now applied to a ProceduralMaterial on the first RebuildTextures() call after the material's textures have been read from cache. Previously, only the modified inputs were applied.
  • (771650) - Substance: Editor Freeze Upon Instantiation of Resource.
  • (none) - Substance: Fixed broken detection and assignment of shader keywords resulting in wrong appearance of ProceduralMaterials in scenes when the ProceduralMaterial was not opened in the Inspector (some shader keywords were enabled when they should not).
  • (none) - Substance: Fixed cache hashing and management issue which could cause the cache to be considered valid again after having been invalidated (often seen after calling Resources.UnloadUnusedAssets()).
  • (none) - Substance: Fixed loading of files with special characters in their paths or names.
  • (none) - Substance: Fixed rare crash caused by using the wrong size when uploading ProceduralTextures.
  • (765510) - Substance: Fixed upgrading old (4.x) project data, legacy shaders should now be used for these old projects instead of being incorrectly replaced by the standard shader.
  • (773614) - Tizen: Fixed error about copying whitelists while building on Windows.
  • (770048) - UI: Fixed exceptions upon assembly/type resolution failures.
  • (773533) - UI: Fixed memory leak where dirty renderers on a disabled canvas would still get added to the dirty list causing crashes on clear.
  • (770804) - UI: Fixed sorting issue where gird based depth sorting would fail to recognize overlapping unbatchable items.
  • (760753) - UI: Vertical alignment of text sometimes appearing higher than expected.
  • (none) - VR: Restart the VR Device if the Oculus Service fails.
  • (770931) - Windows Store: Fixed exported VS project failing to build for non-x86 CPU when there is a managed assembly in the project that's been compiled for x86.
  • (769835) - Windows Store: Fixed game crashing when its name is exactly 20 characters long on il2cpp scripting backend.
  • (771765) - Windows Store: Fixed intellisense in generated Il2CppOutputProject to be able to correctly resolve windows 10 headers.
  • (766764) - Windows Store: Fixed Unity failing to build on top of a previous build when target directory is read-only on il2cpp scripting backend.
  • (770941) - Windows Store: Graphics plugins now work on il2cpp scripting backend.
  • (756152) - Windows: Fixed Application.persistentDataPath when Product Name contains invalid path character.
  • (none) - Windows: Fixed unnecessary symbols exported for Windows Standalone Player executable. This was making some Nvidia drivers wrongly pick up integrated GPU instead of discrete one on some systems.
  • (769711) - XBoxOne/IL2CPP: Allow a call to Guid.NewGuid to work correctly.

GameDev News

blog comments powered by Disqus

Month List

Popular Comments