Skip to content

Releases: bioglaze/aether3d

v0.8.7

08 May 08:41
Compare
Choose a tag to compare

API documentation: https://twiren.kapsi.fi/doc_v0.8.7/html/

New Features:

  • Spotlight attenuation is driven by cone angle
  • Particle system.
  • Alpha testing for materials. Currently used only in shadow pass.
  • Spotlight radius now affects its culling instead of hardcoding the radius in the shader.
  • Roughness constant can be set for materials.
  • Render texture pixels can be read.
  • Render textures can enable UAV flag to allow RW access in compute shaders.
  • Render texture depth can be bound to compute shaders.
  • VRAM usage can be queried with System::Statistics::GetGpuMemoryUsage().
  • Bloom intensity can be set.
  • MSAA and fullscreen can be set simultaneously in Misc3D sample.
  • D3D12: Shaders are now compiled with DXC, using shader model 6.0.
  • D3D12: Compute PSO is created when the shader is loaded, not when it's dispatched.
  • Graphics API validation can be enabled/disabled when creating the renderer, no need to compile the engine library anymore.
  • Graphics API markers are now enabled in Release builds.
  • iOS: Device motion reading.
  • Metal: Batched buffer, sampler and texture setting in draw().
  • Vulkan: Reduced memory allocations from vertex/index buffer creation.
  • Vulkan: Barrier batching. Used for example in Bloom blur texture transitions.
  • Vulkan: Timestamps can be disabled by defining DISABLE_TIMESTAMPS.

Bugfixes:

  • Metal: Render pass order is fixed, previously for example depth pass was after light culler.
  • Shadows now work with Standard shader.
  • Vulkan: Fixed lights still being visible even after destroying the light component.
  • Vulkan: Fixed a texture barrier validation error that started happening with SDK 1.2.182
  • More accurate frustum culling profiling.
  • D3D12: Spotlight shadow projection now matches Vulkan.
  • D3D12 MSAA was broken.
  • Fixed gameobject name parsing from .scene, it had a preceding space.
  • LineRendererComponent was missing from Makefile_Vulkan_OpenVR.

Editor:

  • Selection highlighting
  • Spotlight radius can be set.
  • Faster camera moving if shift is pressed.
  • Directional light direction visualization.
  • Fixed file type filter in audio clip open dialog.
  • Fixed a crash after pressing Esc to deselect an object and then loading a scene file.
  • Fixed only one submesh being visible when duplicating a gameobject.
  • Fixed textfield rendering.
  • Fixed light direction visualization on macOS.
  • Fixed gameobject duplicating to also duplicate AudioSourceComponent and CameraComponent.
  • Del key is now handled in text input field.

v0.8.6

18 Apr 10:20
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.8.6/html/

New features:

  • Updated Visual Studio projects to 2019
  • SSAO
  • Spot light attenuation.
  • Skinning in Standard shader
  • Skinning in Depthnormals shader
  • Added a LineRendererComponent.

Vulkan:

  • Shaders are now compiled with DXC
  • Bugfix: Bloom now works with MSAA.
  • Bugfix: GPU validation error when freeing font memory.
  • Bugfix: Fixed accessing garbage data if calling System::CreateLineBuffer more than once.

D3D12:

  • Pix markers work again.

Metal:

  • Fixed flickering when using Forward+ and shadows or render textures.

General bugfixes:

  • Fixed .obj converter index overflow when total number of indices in all meshes exceeded 65535.
  • Fixed mouse wheel reporting on Windows.
  • Fixed Blender exporter autosmooth normal Python syntax.
  • Fixed Blender exporter UV orientation.
  • Fixed some exporting code paths when there are more than one mesh.
  • Fixed spot light shadowcasting to apply cone angle instead of hardcoding it to 45 degrees.

Editor:

  • Bugfix: Gizmo x-direction moving was wrong.
  • Bugfix: Grid is now rendered with proper depth testing
  • Bugfix: Fixed jumpy camera panning on Linux.
  • Bugfix: Fixed scene camera moving over Inspector.
  • Bugfix: Fixed a memory leak in Nuklear renderer.
  • Bugfix: Fixed game object copying not copying some components or properties,
  • Light direction visualization.
  • Spotlight cone angle can be set.
  • PageUp/Down moves the object in z-direction.
  • Textfield now accepts left and right key to move the cursor.
  • Bloom threshold slider
  • Postprocessing controls
  • Optimized mouse hovering by not checking collision against everything, only the gizmo.

v0.8.5

02 Sep 15:18
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.8.5/html/

New features:

  • Better-looking Bloom
  • Standard shader supports shadows.
  • Standard shader matches Filament more closely.
  • MeshRenderer's AABB can be visualized.
  • D3D12: Support for Radeon GPU Profiler user markers by defining USE_RGP_MARKERS in GfxDeviceD3D12.cpp..
  • Keyboard events store modifiers like shift and control.

Vulkan:

  • Fixed cube map render texture rendering only one face.
  • Fixed PSO hash calculation. It caused a bug with cube render texture.
  • Fixed a crash when enabling both multisampling and shadows.
  • Fixed a crash when loading a corrupted texture through stb_image.
  • Fixed synchronization validation errors in texture code.
  • Fixed translucency.

D3D12:

  • Fixed translucency.
  • Fixed that If cube map loading fails, use a default cube texture instead of crashing.
  • Fixed Bloom wrong resource states, leading to flickering.

General bugfixes:

  • Scene's minimum ambient wasn't applied in shadow mapping code.
  • Movement keys sometimes remained stuck after releasing.
  • HLSL and Metal Standard shader now produces more similar lighting.
  • Blender exporter didn't handle coordinate system properly, seen on files with multiple meshes.
  • Fixed gameobject copying, causing accessing deleted objects when loading a scene file with multiple objects.
  • Fixed Matrix44::TransformPoint/Dir when input and output are the same object.
  • Normal map state leak: previous object's map can be shown on an object that doesn't have a normal map.
  • Cube render texture faces displayed the same direction.
  • Shadows could be visible even when no lights cast shadow.
  • Spot light shadow displayed wrong outside the area, especially in back of the camera.

Misc:

  • Updated OpenAL-soft to 1.20.1
  • Updated stb_vorbis to 1.20.
  • Updated FBX SDK dependency to 2020.1.1

Editor:

  • bugfix: Inspector values for position and scale now accept keyboard input
  • bugfix: Transform gizmo now follows object when position is changed in Inspector
  • bugfix: If scene save dialog was dismissed, scene was left without a camera.
  • bugfix: Grid lines moved when mesh goes out of screen
  • bugfix: Mouse movement was inverted on Wayland.
  • bugfix: Thin vertex format (PTN) mesh picking caused array-out-of-bounds error.
  • bugfix: Panning continued after stopping mouse movement.
  • bugfix: Fixed flickering on macOS.
  • bugfix: Smoother camera keyboard movement.
  • bugfix: Editor camera was saved into .scene file.
  • bugfix: Material is now applied to all submeshes.
  • bugfix: Gizmo axis dragging direction fix
  • Mouse scroll handling.
  • Game object can be selected in the inspector.
  • Gizmo axis under cursor is highlighted.
  • 'f' key focuses on object
  • Arrow keys can be used to move selection.
  • Light color can be changed.
  • Inspector now uses a tree view for components.
  • Game object can be duplicated using ctrl-d
  • Game object can be selected by clicking its sprite.
  • macOS: Massive input handling fixes
  • macOS: Game object can be removed using Backspace

Known issues:

  • Metal: Flickering when using Forward+ with render targets or shadows.
  • Metal: If standard material is used but forward+ is not defined, system hangs.
  • macOS/iOS: .ogg file loading crashes.
  • Editor: If light casts shadow, gizmo is dark
  • Editor: Panning is jumpy on Linux.
  • Editor: Gizmo x-dir is sometimes wrong
  • D3D12: Pix markers are temporarily commented out, will be added back into next release.
  • D3D12: bounding box drawing breaks cube map binding.
  • Vulkan: Bloom doesn't work with MSAA

v0.8.1

13 Feb 16:58
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.8.1/html/

New Features:

  • Blender exporter supports Blender 2.80
  • Scene files can contain normal maps. If their file name ends with "_n", their colorspace will be linear.
  • BC5 texture compression support
  • Cube map reflection in standard shader
  • Serialized material can have multiple textures
  • Render targets can now be 16-bits

Metal:

  • Audio system uses AVAudioEngine instead of deprecated OpenAL.
  • Fixed samplers not using mipmaps.

Vulkan:

  • Compute shader hot-reload
  • Fixed: vkCmdResolveImage doesn't use optimal layout, spams warnings
  • Fixed depthnormals GPU time calculation
  • Fixed fullscreen crash when Forward+ is used
  • Fixed render texture being translucent when shadow rendering is enabled.
  • Fixed validation errors when loading BCn cube maps
  • Dynamic vertex buffer, used for Nuklear/Editor. Much faster.
  • Cube map faces loaded from non-compressed textures can generate mipmaps
  • GPU-assisted validation
  • Performance best practices validation
  • Use standard location for Vulkan headers
  • Don't use deprecated debug marker extension
  • Don't crash if swapchain has 4 images

D3D12:

  • Fixed fullscreen crash when Forward+ is used
  • Fixed render texture being translucent when shadow rendering is enabled.
  • Fixed anisotropic filtering.
  • Implement normal maps in Standard shader
  • Mipmaps for DDS cube maps
  • Use newer Pix3 API. Needs WinPixEventRuntime NuGet package.
  • Texture2D hot-reload
  • Mouse coordinates were wrong in NuklearTest

Misc:

  • Normal map is scaled correctly by * 2 - 1 and other fixes to tangent-space
  • Fixed some DDS files to load without asserts.
  • FBX SDK dependency updated to 2019.5
  • stb_image and stb_vorbis updated (vorbis 1.18, image 2.25)
  • Skip shadow pass if no lights cast shadow

Editor:

  • Don't deselect object if inspector is clicked
  • Keyboard input on macOS
  • Point light radius can be changed in its inspector
  • Game object position and scale can be changed in its inspector
  • Game objects can be selected by clicking their sprites
  • Fixed setting a mesh for a game object doesn't display it (Vulkan, added mesh to empty GO)
  • File type filter in open dialogs
  • Can add and play audio clips
  • Cmd+S and Cmd+O open save/close dialog on macOS

Code Metrics:

  • Lines of code without ThirdParty: 24729

v0.8

06 Jul 12:45
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.8/html/

New features:

  • Skinning in shadow pass
  • BC4 texture compression support
  • Shadow casting can be disabled per MeshRenderer
  • Ambient light color can be set for Scene.
  • Bloom effect
  • Timer query for light culler

Metal:

  • Don't recreate vertex buffer if the old is big enough
  • Don't set PSO if not necessary
  • Implemented additive alpha blending
  • Fixed broken Spotlight shadow

Vulkan:

  • VR implementation
  • Spotlight color in Forward+
  • Profiling Present()
  • Fixed line drawing
  • Vertex and Pixel shader reloading
  • Shader VGPR and SGPR display on AMD
  • Fix garbage when mipmap generation is used
  • Use new Debug Utils extension instead of old Debug Marker
  • Mipmaps can be generated for cube maps
  • Fixed MSAA
  • Fixed spot light shadow map addressing mode

D3D12:

  • Fixed spot light shadow map addressing mode
  • Spotlight in Forward+

Editor:

  • Game object can be deleted using "delete" key
  • Fixed a crash when cancelling scene file open dialog
  • Save dialog works on Windows and macOS
  • Open dialog works on macOS
  • Fixed "set mesh" removing the current mesh if it's cancelled
  • Gamepad support
  • Component sprites shown on game objects in the scene view.
  • Fixed "Set Mesh" on macOS

Code Metrics

  • Lines of code without ThirdParty: 22403

v0.7.8

28 Sep 14:47
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.7.8/html/

New Features:

  • All backends

    • Shaders now include the uniform buffer instead of repeating its definition
    • Normal maps in Standard shader
    • VSync can be disabled
    • Directional light in Standard shader
    • Spot lights in light culler
    • Scene files can provide compressed textures in addition to uncompressed
    • Scene is rendered to a texture that can be used for postprocessing effects.
  • Vulkan

    • Mipmaps are loaded from .dds files if they exist
  • Metal

    • Cube map faces can be .dds
    • ASTC texture support on iOS
  • D3D12

    • Shaders are now loaded as bytecode instead of compiling at runtime
    • Shader hot-reload
    • HLSL 5.1

Removed Features:

  • Removed OpenGL backend
  • Greatly reduced STL usage

Bug Fixes:

  • Vulkan

    • Better mouse release handling on Linux
    • Shaders always sampled mip level 0
    • Fixed texture loading on Intel driver
    • Fixed vertex offset in Draw(), fixing UI rendering
    • MSAA was never enabled on Linux
  • Metal

    • Several optimizations, Sponza scene with 2048 lights now renders at 60 Hz on iPad Pro
    • Massive speedup on macOS by using MTLResourceStorageModeManaged for UBOs
  • D3D12

    • Fix mipmap loading from .dds
    • Shaders always sampled mip level 0
    • Disable alt-enter

Code Metrics

  • Lines of code without ThirdParty: 21359

v0.7.5

03 Jan 17:22
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.7.5/html/

New features:

  • Vulkan

    • Replaced GLSL shaders with HLSL, shared with D3D12
    • Render textures (2D)
    • Shadow maps
    • Skinned animation
    • Total vkAllocateMemory calls are logged in Statistics
    • GPU timer queries
    • Line drawing
  • Metal

    • sRGB backbuffer
    • Skinned animation
    • Keyboard input on macOS
  • D3D12

    • Skinned animation
    • sRGB textures
    • GPU timer queries

General

  • Nuklear UI support
  • HiDPI support on Windows, to prevent blurry scaling
  • Windows: Gamepad state is read only if it's connected
  • FBX converter reads tangents if they exist
  • Shader uniforms are accessed by buffer offset instead of name

Bug fixes:

  • Linux mouse up event is now handled
  • Screen coordinate system origin was inside title bar on Windows
  • Disable window resizing on Linux, caused a crash on Vulkan
  • Gamepad right thumb was not handled on Linux
  • Directional light shadow was broken if the scene contained a 2D camera
  • Vulkan
    • Wrong projection matrix on Linux and Windows Makefile build.
    • Anisotropy feature was not enabled, so using it caused a validation error
    • Texture loading was broken on Intel
    • Fixed cube map loading
  • D3D12
    • System::DrawTexture() displayed wrong texture
  • GL
    • Don't assert on performance debug output messages
  • Editor
    • Fix component sprite positions on HiDPI displays

Third party updates:

  • Updated OpenVR to 1.0.10

Known bugs:

  • D3D12
    • Shadow maps use wrong sampler
    • NuklearTest renders different from GL
  • GL
    • Spotlight-shadow has a bright part outside of the map
  • Vulkan
    • Timer queries don't show valid values on some systems
    • Cube render textures are unimplemented
    • Forward+ is partially broken
    • NuklearTest has some rendering issues

Code metrics:

  • Lines of code without ThirdParty: 22426

v0.7

06 Aug 13:03
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.7/html/

New features:

  • Skinned animation support for FBX (OpenGL only for now)
  • Triangle picking
  • GPU profiling (OpenGL only for now)
  • Looping audio
  • Components can be disabled
  • Camera viewport
  • Metal
    • Point light tile culling (Forward+)
    • Massive performance increase due to not creating uniform buffers on the fly
    • Line drawing
    • Material's shader name is now read from the scene file
  • Vulkan
    • Massive performance increase due to not creating uniform buffers on the fly
    • Render textures
  • D3D12
    • Point light tile culling (Forward+)
    • Massive performance increase due to better handling of descriptor heaps
    • Line drawing
    • Shader compiler treats warnings as errors
    • Shader compiler optimizes shaders in Release
  • OpenGL
    • Uniform buffer objects
    • Textures are not unnecessarily bound
  • Editor
    • Undo menu shows what action to undo
    • Fixed undo duplicate
    • Disable menu item for component adding if the go already has the component
    • Camera component's far plane is now 200 instead of 1
    • ctrl-a now selects all objects in scene tree

Bug fixes:

  • Asserts are now only used in Debug builds
  • Fix rendering of disabled object's shadow
  • Fix depthnormals rendering meshes twice
  • Fixed win32 input event handling that caused jittery mouse movement
  • Metal
    • Fixed an occasional crash (app's render pass descriptor could sometimes be nil)
    • Fixed cube map loading from .dds
  • Vulkan
    • Fixed z-fighting by preferring a better depthstencil format
    • Fixed a crash when draw call count was too high

Third party updates:

  • Updated stb_image.c to 2.16
  • Updated stb_vorbis.c to 1.11
  • Updated OpenVR to 1.0.8

Code metrics:

  • Lines of code without ThirdParty: 21240

v0.6.5

02 Mar 19:26
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.6.5/html/

New features:

  • Line drawing (OpenGL only for now)
  • Wireframe fill mode
  • VR: Controller position exposed
  • VR: Removed Oculus target, use OpenVR instead
  • iOS: Input
  • GL: Debug context in Linux
  • Optimized Quaternion::FromMatrix
  • More serialization, like light color and game object layer/enabled status
  • 2-channel texture format, used for VSM shadows
  • Shadow and depth pass profiling
  • Triangle count shown in statistics
  • D3D12
    • .dds for cube maps
    • Support all vertex input layouts
  • Vulkan
    • Support all vertex input layouts
    • 2D camera can render on top of 3D scene
    • Anisotropic samplers
  • Metal
    • Shadows
    • .dds for cube maps
    • Mipmaps for cube maps
    • Anisotropic samplers

Bug fixes:

  • Camera and light now work correctly when their game object is a child of another game object
  • Fixed frame time calculation on Linux
  • D3D12
    • Fixed a crash when using MSAA and shadow maps
  • Metal
    • Fixed loading of small textures
    • Fixed a crash in instruments
    • Fixed depth testing (missing depth attachment)
    • Fixed scene deserialization
  • Fixed NEON SIMD bias matrix
  • macOS: libaether3d_osx_gl.a was not copied into aether3d_build

ThirdParty updates:

  • stb_image.c: 2.13
  • OpenAL-soft: 1.17.2
  • OpenVR: 1.0.6
  • FBX SDK: 2017.1

v0.6

01 Dec 18:09
Compare
Choose a tag to compare

API documentation: http://twiren.kapsi.fi/doc_v0.6/html/

New Features:

  • HTC Vive support
  • Vertex-cache optimization
  • Transparent object sorting
  • SIMD math enabled by default
  • Vulkan
    • Mipmaps
    • DDS textures
    • sRGB
  • Metal
    • Forward+ light culling
    • Cube map render target
    • DDS textures
  • D3D12
    • DDS textures
    • GPU-based validation
  • OpenGL
    • Cube map faces can be read from DDS
  • Linux mouse wheel support
  • More serialization, making Editor more useful
  • OBJ's MTL reader project for Visual Studio
  • Frame time logging

Editor:

  • Sprite renderer inspector
  • Shadows
  • Shortcuts work also in the scene window
  • Confirm quit if scene is unsaved

Bugfixes:

  • Shadows
    • Areas outside the shadow map are now unshadowed
    • Shadow camera creation could crash due to pointer becoming invalid
  • General
    • Fixed a crash when using transform parenting due to pointer becoming invalid
    • Fixed camera moving when pressing unhandled keys
  • Vulkan
    • Debug markers
    • Select suitable backbuffer and depth format, enhances compatibility
  • Metal
    • Renderpass logic fixed, reducing flickering and fixing multiple cameras
    • Fixed debug markers
    • Fixed MSAA
  • OpenGL
    • Context selection on Linux, preventing eg. Mesa3D defaulting to 2.1 on AMD
    • Texture cache didn't take into account filtering, sampler etc.
      Code metrics:
  • Editor
    • Enabling shadow caused a crash on Windows
  • Many other fixes, fixed corner-case crashes etc.
  • SLOC without ThirdParty: 26810
  • Average cyclomatic complexity (Metrix++): 2.49