Skip to content

Releases: DragonJoker/Castor3D

Version 0.16.0

20 Apr 16:25
Compare
Choose a tag to compare

Important Changes

  • Implemented clustered rendering. in #584 and #590
  • Reworked light attenuation as a range. in #603
  • Implemented context blocks in the scene file parser.
  • Removed deferred rendering. in #605

New Features

  • Implemented Mikktspace support. in #601
  • Implemented colour grading. in #613
  • Implemented a glTF importer. in #606
  • Implemented Depth of Field. in #628
  • Added support for HDR screens.
  • Scene importers can now import cameras.

What's Changed

  • Reworked submesh components like pass components.
  • Lights: Moved shadow data in a separate buffer. in #591
  • Scattering: Fixed interactions with shadows. in #592
  • Upload: Reworked the way resources are uploaded to VRAM. in #595
  • Particles: Fixed GPU particle system. in #596
  • Events: Renamed events to have them more explicit. in #597
  • Expressed FFTOcean as pass and submesh components. in #616
  • Water: Implemented water as a pass component. in #615
  • Render: Reworked node update to improve performances. in #624
  • Loading: Added a way to prevent unnecessary passes from loading. in #594
  • Loading: Reworked loading screen. in #626
  • Submesh: Fixed tangents. in #604
  • Textures: Reworked. in #610

Full Changelog: v0.15.0...v0.16.0

Version 0.15.0

28 Apr 19:04
Compare
Choose a tag to compare

Important Changes

  • Fixed COM binding, and finished implementation of a basic C# viewer application.
  • Implemented support for multiple lighting models in the same scene.
  • Improved PCF shadows, sampling a Poisson disk.
  • Castor3D now uses a reversed Z buffer.
  • Drastically improved overlays preparation and rendering performances and scalability.
  • Got rid of almost all remaining uses of std::shared_ptr.
  • Reworked PBR specular component, to make it behave consistently when used with metalness.
  • Improved environment map reflections, to make it more consistent with IBL.

New Features

General

  • Implemented static nodes, that will only be rendered once in shadow map passes and voxelize pass.
  • Moved CastorGui plugin code in Castor3D, and implemented more GUI controls.
  • Added ways to invert normals, either at mesh import or through the material pass.

GuiCommon

  • Updated tree items properties regarding pass components.

What's Changed

Full Changelog: v0.14.0...v0.15.0

Version 0.14.0

22 Nov 00:39
Compare
Choose a tag to compare

Important Changes

What's Changed

Full Changelog: v0.13.0...v0.14.0

Version 0.13.0

09 Jun 09:44
Compare
Choose a tag to compare

Important Changes

  • Drastic performance improvement.
  • Implemented mesh and task shader, with frustum culling and backface culling.
  • Full rework of external data import (meshes, skeletons, animations).
  • Implemented morph target animations, replacing the per-vertex animations.
  • Added support for multiple texture coordinates sets (up to 4).
  • Added vertex colour component.
  • Merged the two implemented PBR workflows into an hybrid one, more flexible regarding extern scenes import.

Version 0.12.0

19 Mar 23:00
Compare
Choose a tag to compare

Important Changes

  • Now using RenderGraph to build a frame graph.
  • Now using bindless textures.
  • Implemented MultiDrawIndirect.
  • Implemented a loading screen.
  • Implemented texture animations (tile maps and transforms).
  • Implemented scene node animations.

New features

Generic plugins

  • Added DrawEdges plugin, to detect and draw edges.
  • Implemented basic ocean rendering plugin.
  • Implemented FFT based ocean rendering plugin.
  • Implemented water rendering.
  • Implemented toon materials collection.

ToneMapping plugins

  • Added ACES tone mapping plugin.

Tools

  • Added HeightMapToNormalMap and fixed normal maps generation.

Modifications

CastorUtils

  • Added support for tile maps.
  • Added conversion from array map to tile map
  • Added AsyncJobQueue, based on ThreadPool.
  • Added GliImageWriter.
  • Added optional FreeImageLoader, when FreeImage library is found.
  • Added compression to BC1/BC3 to image loading, using cvtt.
  • Created SpinMutex implementation
  • TextWriter now writes to a castor::StringStream.
  • Image loading now also generates mipmaps.
  • Integrated additional parsers.
  • Reworked FileParser to parse files in two steps.

Castor3D

  • Added frustum culling for point lights shadow maps.
  • Added support for multiple rendering devices.
  • All post effects are now created in the render target, to be enabled or disabled at will.
  • Allowed scene import through mesh importer.
  • Added Blinn-Phong pass.
  • Generalised shaders, using intermediate classes : LightingModel, ReflectionModel and LightMaterial.
  • Added TextureCache, and using it to merge pass textures.
  • Added a way to have non pickable nodes.
  • Added rotate mesh options to importers.
  • Added support for a secondary UV set.
  • Added support for custom additional render technique passes.
  • Added support for hull/domain shaders in scene render passes.
  • Added support for passes without lighting.
  • Added support for safe bands in Camera.
  • Allowed textures components remapping on scene import.
  • Depth prepass now also writes normals.
  • Enabled LPV for point lights, and fixed spot lights'.
  • Events can now be skipped.
  • Merged PBRMR and PBRSG lighting models to a single one, internally.
  • Objects can now be excluded from culling tests.
  • Removed gamma correction for textures and materials, images use srgb formats when needed.
  • Removed specific PassBuffers.
  • Reworked Pass text writing and parsing.
  • Moved SSS Profiles to their own shader buffer.

CastorGui

  • Introduced style classes to handle that.

DiamondSquareTerrain

  • Allowed random seed disabling (for testing).
  • Now tiling UVs

AssimpImporter

  • Improvements regarding materials.
  • Improvements regarding animations processing.
  • Added scene nodes and light sources import.

GuiCommon

  • Added custom render passes configuration.
  • PostEffects configuration has been added to the tree.
  • Removed materials list and some duplicates in scene view.

Fixed Bugs

CastorUtils

  • Fixed Matrix2x2 and Matrix3x3 inversion.
  • Fixed aligned alloc on win32.

Castor3D

  • Fixed a crash when skinning keyframe is not found.
  • Fixed background pass, regarding fog.
  • Fixed interaction between indirect diffuse and reflections.
  • Fixed crash with morphing that could happen on release builds
  • Fixed import/export of morphing animations.
  • Fixed indirect lighting handling in forward passes.
  • Fixed point shadow maps.
  • Fixed spot shadow maps.
  • Fixed render loop cleanup events processing.
  • Fixed render target creation, to have the right size and format.
  • Fixed swapchain reset while RenderWindow is initialising.
  • Fixed tone mapping switch.

GuiCommon

  • Fixed a crash in LanguageFileParser.
  • Fixed crash on light GI type change
  • Fixed crashes when trying to load hdr images.
  • Fixed texture properties display.

Full Changelog: v0.11.0...v0.12.0

Version 0.11.0

19 Feb 01:26
b8ef8e3
Compare
Choose a tag to compare

Features

General

  • Added support of vcpkg for external dependencies.

CastorUtils

  • Reworked castor::Matrix and castor::Point to make them hold static data, and reduce memory footprint of Matrix.

Castor3D

  • Castor3D now relies on Ashes, allowing support for OpenGL, Direct3D11 and Vulkan renderers.
  • GlslWriter has been completely removed and replaced by ShaderWriter, allowing the generation of shaders in the appropriate rendering API shader language.
  • Textures now have a TextureConfiguration instead of a TextureChannel.
  • Added support for cross skyboxes.
  • Enabled anisotropic filtering control from scene file.
  • Added Raw and PCF shadow maps choices.
  • Added sendEvent function to Engine, to be able to execute an event directly if there is an enabled device.
  • Extracted binary write/parse classes to new files, to reduce includes dependencies.
  • Reworked mip level management for textures loaded from files.
  • Added volumetric light scattering.
  • MatrixUbo is now a reference, in RenderPass, hence is owned by owner classes.
  • Upgraded scene files, meshes can now hold a default material.
  • Render queue now uses SceneCuller from its render pass, and this culler is used for frustum culling.
  • Cascaded shadow maps are implemented and functional.
  • Overlays are now rendered them in their own framebuffer, and then combined with the 3D rendering.
  • Shadow maps now use texture arrays (2D or Cube).
  • Added Light Propagation Volumes global illumination implementation.
  • Added Voxel Cone Tracing global illumination implementation.
  • Implemented texture animations (UV rotate and translate).

RenderSystems

  • They have been completely removed, thanks to Ashes.

PostEffects

  • Created LinearMotionBlur post effect.

Samples

  • Rehabilitated ShaderDialog, it now can be used to display tone mapping and post effect shaders.
  • ShaderDialog now displays all the shaders for the pipeline used to display a pass.
  • Selected submesh's bounding box now appears in yellow.

Tools

  • Added CastorTestLauncher, which allows to run rendering tests through the wanted rendering API.
  • Added Aria, which monitors rendering tests.
  • CastorMeshUpgrader tool has been added, allowing to update cmsh files with a cl tool.
  • CastorMeshConverter tool has been added, allowing to convert "any" mesh file to cmsh mesh with a cl tool.
  • Added DiffImage, which allows image comparison between a reference image and another one (generated through CastorTestLauncher), to automatise rendering tests.

Fixed Bugs

CastorUtils

  • Fixed matrix initialisation from another different size matrix.
  • Fixed pixel buffer flip.

OBJImporter

  • Few fixes in face group management.

v0.10.0

31 Dec 09:09
Compare
Choose a tag to compare

BUGS FIXED

Castor3D

  • Fixed bounding boxes for animated meshes and skinned meshes.
  • Repaired an reenabled frustum culling.
  • Fixed alpha rejection.

FEATURES

CastorUtils

  • Renamed namespace Castor to castor.
  • Added ChangeTracked and GroupChangeTracked classes, allowing to
    track changes to a member variable.
  • Renamed CubeBox and SphereBox to BoundingBox and BoundingSphere.
  • Splitted Colour in two classes: RgbColour and RgbaColour.
  • PlaneEquation is no more a template class.
  • Created a buddy allocator class: BuddyAllocator.

GlslWriter

  • GlslWriter class now holds the shader program inputs, to generate a
    glsl::Shader source.

Castor3D

  • Renamed namespace Castor3D to castor3d.
  • Emissive in a material is now stored on a single floating point
    (emissive maps still hold a colour though).
  • Implemented Physical Based Rendering, using both metallic/roughness
    and specular/glossiness workflows.
  • RenderPipeline now also holds the shader program.
  • Implemented Screen Space Subsurface Scattering (without backlit
    transmittance, though).
  • The light pass result is now stored in two render targets: diffuse
    and specular.
  • Vertex buffers now use a buddy allocated pool.
  • Shadow mapping now uses variance shadow maps.
  • Transparent meshes are now rendered using Weighted Blended OIT
    rendering.
  • Screen Space Ambiant Occlusion has been improved, using Scalable
    Ambiant Obscurance implementation.
  • Parallax Occlusion mapping is implemented.
  • Reflection and refraction mapping have been implemented.
  • Deferred rendering has been fully integrated to the engine, for
    opaque objects rendering.
  • Created components for submeshes, to move functionalities out of
    Submesh, and make it more flexible.
  • Rendering now uses a depth prepass.
  • Created ColourSkybox, to handle background colour and skyboxes in
    the same way.
  • Created ShaderBuffer class, to be able to handle SSBOs or TBOs in a
    similar way, choosing the most appropriate one, depending on running
    machine.

Generators

  • Created DiamondSquareTerrain plugin.

Generic

  • Events from CastorGUI are now forwarded to the user.

Importers

  • Removed almost every importer plugin, keeping only Assimp, OBJ, and
    PLY importers.

PostEffects

  • Created SMAA post effect.
  • Created Kawase Light Streaks post effect.
  • Created Film Grain post effect.

RenderSystems

  • Updated GlRenderSystem to support the features provided by Castor3D.

Techniques

  • Technique plugins have been completely removed.

Tone mappings

  • Created Uncharted 2 tone mapping plugin.

v0.8.0

06 Feb 16:37
Compare
Choose a tag to compare

BUGS FIXED

CastorUtils

  • Fixed transformation matrices.

Castor3D

  • Fixed hardware instantiation, and instantiation, for meshes with different materials.
  • Fixed a bug in border panel overlays material management.
  • Fixed an overlays bug, on Intel GPU (was due to a real bug in AMD driver that hid the bug).
  • The billboards are now fixed.

Subdividers

  • Fixed PN Triangles subdivider, to use Bezier patches.
  • Updated Loop subdivider.

GlRenderSystem

  • Fixed a crash on Linux, with Intel GPUs.

FEATURES

General

  • Compiles now with VS >= 2013 and GCC >= 4.9.
  • Direct3D support has eventually been dropped, I don't have time for it.

CastorUtils

  • Point4f and Matrix4x4f can now use SSE2 instructions for computations.
  • All Castor projects are now using UTF-8 texts, using std::string.

Castor3D

  • The skeleton animation system is now finished and working.
  • Removed every XxxRenderer class, except for OverlayRenderer.
  • The topology type is no longer in Camera, but in GeometryBuffers.
  • Engine has been splitted, creating a RenderLoop class, and Managers to create elements, collect them, and retrieve them.
  • SceneFileParser has been extended, to be able to use parsers from external plug-ins.
  • The back frame buffers are retrieved and bindable like other FrameBuffers though you can't create or add attachments to it.
  • Added a debug GPU objects tracking system, to ensure their destruction is made before context destruction.
  • Can now read scenes from zip archive files.
  • The text overlays now can have a horizontal and a vertical alignment.
  • Added an initial zip data folder, Core.zip, which contains basic materials and debug overlays.
  • The shader lighting has been reviewed and fixed.
  • The Scene class has been reworked, to use ObjectManager classes, and ResourceManager views.
  • Now, the ShaderProgram retrieves the vertex inputs layout. This layout is used in Submesh, to create the appropriate GeometryBuffers.
  • Castor3D now renders the scenes using HDR and tone mapping. The default tone mapping configuration will make the render look like there were no HDR enabled.

GlRenderSystem

  • Lights texture now uses Texture Buffer Objects.
  • Removed every GlXxxRenderer class, except for GlOverlayRenderer.
  • Support for OpenGL 1.x has been removed.
  • Support for OpenGL 3.x has been enforced, forcing UBOs, for example.
  • Implemented a GlslWriter, to write GLSL code from C++ source.

Subdividers

  • Implemented a Phong tessellation subdivider.

Importers

  • Implemented a FBX importer plug-in.

Techniques

  • Each render technique is now implemented in its own plug-in.

PostEffects

  • The first post effect plug-in has been implemented: Bloom.

CastorGUI

  • New plug-in, allowing creation of GUIs inside Castor3D scenes.

GuiCommon

  • The whole look and feel has been reworked, using wxAuiManager.
  • Properties are displayed through wxTreeCtrl and wxPropertyGrid, to list objects and view their properties.

v0.7.0

06 Feb 16:36
Compare
Choose a tag to compare

BUGS FIXED

  • Fixed a crash when closing the application compiled in release.
  • Fixed LoopDivider that didn't move newly created vertices, leaving them unchanged

FEATURES

  • Implemented Multi Sampling Anti Aliasing, with alpha to coverage
  • Implemented Deferred Rendering
  • Implemented Render to texture
  • Implemented overlays
  • Added texture channels (colour, ambient, diffuse, specular, normal, height and gloss).
  • Implemented Frame Buffers.
  • Reduced vertex buffers memory footprint
  • The lights are now implemented using a texture, increasing the limit from 8 to 100 sources.
  • TransformationMatrix class is no more, it has been resumed to a functions collection working on 4x4 square matrix, regrouped in a namespace : MtxUtils.
  • Modified SceneNode management : a base class (NodeBase) holding all informations from old SceneNode and 3 derived classes (GeometryNode, CameraNode and LightNode) holding render specifics for respective linked objects (Geometry, Camera and Light).
  • MovableObject class now has less functionalities (now just a name and a NodeBase), Light and Camera classes now derive from this one for more uniformity in their moves, compared to geometries.
  • Renamed UniformVariable in FrameVariable to have a better view of what it is and to link this less to OpenGL.
  • Created a CMakeLists to generate solution from CMake.
  • Reordered file system to ease the use with CMake
  • Splitted Plugin class in 3 : RenderPlugin, DividerPlugin and ImporterPlugin. Importers and dividers will be created and modified without recompiling all projects.
  • Created a project for each existing importer (OBJ, PLY, MD2, MD3, 3DS, ...)
  • Created a plugin for LoopDivider but PNTrianglesDivider remains in Castor3D because it is used in Icosahedron generation.
  • Started Cg shaders implementation. It implied a modification of scene files because in Cg and uniform variables are attached to a program (vertex, pixel, geometry) instead of being attached to the whole shader as it is in GLSL.
  • Buffers used for the render (Vertex, attribute, Texture, Normals, ...) are now created by the RenderSystem so they can be created directly in Castor3D and not only in renderers (GL2, GL3 and future D3D).
  • Suppressed Singletons for the Managers (Image, Font, Material, Animation and Mesh).
  • Remerged the SceneNodes to ease their use.
  • Subdividers can also make their job in a thread and launch a callback at the end of it (cf. CastorShape).
  • Submesh::AddPoint now creates IdPoints and Submesh::AddFace uses it to create the vertices.

v0.6.0

06 Feb 16:36
Compare
Choose a tag to compare

BUGS FIXED

  • Protected shared datas with recursive mutexes (essentially in managers) to avoid random crashes.

FEATURES

  • Added a class to manage matrices, in order to be able to suppress fixed pipeline support in OpenGL
  • Modified render system : added Renderable class which is in charge of creating the associated Renderer in order to ease the creation of this class's derived, such as submesh, scene node, light or camera.
  • Changed scene/material/meshes file extensions (respectively to cscn/cmtl/cmsh)