Releases: bioglaze/aether3d
v0.8.7
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
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
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
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
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
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
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
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
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
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