github OGRECave/ogre-next v2.3.0
v2.3.0 Daedalus

latest releases: v2.2.6, v2.1.2
2 years ago

Codename Daedalus

For more information, see the manual

For porting information see What's new in Ogre 2.3 (Markdown version) and Root Layouts and Ticket #101

See SW & HW Requirements
See platforms supported
See Ogre 2.1 FAQ
See What's new in Ogre 2.3

New features

  • Vulkan RenderSystem
  • Switch importV1 to createByImportingV1
  • Shadow's Normal Offset Bias
  • Unlit vertex and pixel shaders unified
  • Added HlmsMacroblock::mDepthClamp
  • Added shadow pancaking
  • ICVCT (Image Cascaded Voxel Cone Tracing). Considered Alpha but useable.

What's Changed

  • Print the errornous pixel format by @mimon in #109
  • Enable wireframe in Metal by @mimon in #110
  • Fix typo RenderToTexture in docs by @mimon in #115
  • Document default render queue ids by @mimon in #116
  • Detect failure to create Dependency directory symlink by @joealam in #118
  • Fix bug with compositor texture referenced from TextureUnitState by @lingfors in #119
  • Fix incorrect window texture resolution in windowed mode in OpenGl by @RauchMatthias in #120
  • Add texture coordinates to (non-v1) Rectangle2D by @TaaTT4 in #127
  • fix the Paging Component for v2.2 by @silicium42 in #136
  • Add support to remove a skeleton definition from its memory manager by @TaaTT4 in #138
  • Fix MaterialBuf isn't binded to vertex shader in HLMS Unlit by @TaaTT4 in #139
  • Put API docs under /api/2.2/ when publishing to gh-pages by @mimon in #95
  • RenderSystems/Vulkan on UNIX should link against X11-xcb by @nargil in #144
  • OgrePlatformInformation.cpp: fixed build on MIPS architecture by @r-a-sattarov in #146
  • CMake: do not add atomic library as dependency, if Clang compiler is used by @niparx in #150
  • E2K: added initial support of MCST Elbrus 2000 CPU architecture by @r-a-sattarov in #149
  • Make Terra system working with Forward3D and/or PCC (with DirectX and Metal render systems) by @TaaTT4 in #156
  • compilation errors by @tghosgor in #158
  • Fix Terra datablock destroys its sampler blocks twice by @TaaTT4 in #159
  • gcc 10.2 requires a separate forward declaration by @tghosgor in #160
  • Check for directory and symbolic links in build scripts. by @felet in #165
  • Add support to set renderables default render queue sub-group by @TaaTT4 in #167
  • Add support to set cameras default sort mode by @TaaTT4 in #171
  • Roughness is used instead of perceptual roughness in default BRDF by @TaaTT4 in #172
  • Vulkan needs to be the last loaded render system. by @Hotshot5000 in #175
  • Enhance textures memory usage dump functionality by @TaaTT4 in #176
  • Add missing include file to Samples by @makuto in #179
  • Make sure Ogre::Bone has same debug requirements by @makuto in #182
  • Fix debug mode in Ogre Node by @makuto in #186
  • Clear coat by @TaaTT4 in #192
  • [2.3] Build-fix for x86. by @przemir in #195
  • Fix Terra normal maps issue and increase its modularity by @TaaTT4 in #201
  • Fix error in config dialog option selector on macOS by @srmainwaring in #204
  • Fix custom_ps_posExecution piece is inserted twice in Unlit by @TaaTT4 in #208
  • Get tag point from bone. by @xissburg in #210
  • HlmsPbsDatablock::mUseEmissiveAsLightmap value isn't saved in/loaded from JSON material by @TaaTT4 in #211
  • Fix readers-writer lock is wrongly handled in STD thread provider by @TaaTT4 in #212
  • Wrong tangent computation in Terra system by @TaaTT4 in #214
  • [GL3+] add support for currentGLContext for macOS by @srmainwaring in #216
  • Fix Tutorial00 on macOS by @jwwalker in #223
  • [OSX] Fix segmentation fault when creating a CocoaWindow by @srmainwaring in #225
  • [OSX] Fix segmentation fault when creating a CocoaWindow when the ext… by @darksylinc in #226
  • Fix the condition in getClosestBlockDim2d(). by @mahiuchun in #230
  • Add override for getCustomAttribute in MetalTextureGpu by @srmainwaring in #237
  • add const to an input parameter of TextureBox::copyFrom by @jwwalker in #242
  • Examples documentation by @oldmanauz in #244
  • Update CSS the style in API Reference page by @mimon in #84
  • In help text of Forward3D, use straight apostrophe instead of curly by @jwwalker in #247
  • Fix Undefined behavior in Vulkan array texture shaders #241 by @darksylinc in #248
  • Added missing include to OgreSTBICodec.h by @YuriAzathoth in #250
  • Fixed building error on MinGW by @YuriAzathoth in #249
  • export OgreMetalView so that a client can subclass it by @jwwalker in #253
  • Add comment to configure build to use distro packages by @resttime in #254

New Contributors

Full Changelog: v2.2.5...v2.3.0

Changelog

  • Support optionally skipping plugins that failed to load

  • Serialize PBS user values in JSON materials

  • Fix assert false positive when Normal or Roughnes Map isn't found

  • Clarify notifyPropertiesMergedPreGenerationStep documentation

  • Fix crash when switching to Isotropic in ImageVoxelizer sample

  • Fix Texture Baking sample crashes

  • [Vulkan] Fix Tutorial_Dynamic when in MipmapsLowest IBL quality

  • [Vulkan] Remove RSC_VERTEX_TEXTURE_FETCH flag. It causes problems

  • [Vulkan] Fix Instanced Stereo

  • Fix pre-C++11 build errors

  • Merge remote-tracking branch 'origin/vct-image'

  • Add Ogre 2.3 changes & Root Layouts to Docs

  • [macOS] Backport fixes to fix build errors

  • Backport fix for linking error on macOS

  • Fix possible out of bounds write when using morph animations

  • Ability to skip searching for GLES1,2,3 via OGRE_SKIP_GLES_SEARCHING

  • Ability to skip searching for Boost via OGRE_SKIP_BOOST_SEARCHING

  • Add comment to configure build to use distro packages

  • [Vulkan] Fix wrong depth bias when reverse Z is disabled

  • drop unused OgreIteratorRange

  • Avoid unnecessary samplers

  • Reduce step size & restore slow camera movement

  • Disable SDF-like hack for specular on CIVCT, it doesn't look good

  • ImageVoxelizer sample can now cycle through cascades

  • [CIVCT] Fix crash when going from 1 bounce to 0 then to 1 back

  • Add customization of settings in ImageVoxelizer sample

  • [CIVCT] Tweak brightness auto balance

  • [GL3+] Fix crash when CIVCT has more than 2 cascades

  • Remove lots of unused code from sample

  • If emissive map is monochrome, then broadcast R channel to G & B

  • Expose device ID in RenderSystemCapabilities

  • Fix build error when building with STBI

  • Add HlmsBlendblock::BlendChannelForceDisabled

  • PlatformInformation: fixed _detectCpuIdentifier() and CPU_FEATURE_NEON detection on 64bit Android and Windows on Arm

  • Fix hang in waitForStreamingCompletion* catch exception in loadRequest.archive->open() too

  • Use portable declaration

  • [CIVCT] Port to Metal (WIP)

  • [CIVCT] Port to Metal (WIP)

  • Forgot to include comment

  • Fix shutdown crashes

  • [CIVCT] Improve specular brightness between cascades

  • Fix PsoCacheHelper creating same entries over and over again

  • Use cascades for Specular GI too

  • Remove dead code

  • [CIVCT] Misc specular fixes

  • Voxelize Sibenik at 128³

  • Fix specular VCT

  • [D3D11] Fix wrong sampler in CIVCT

  • [IVCT] Fix missing voxels when split into multiple batches

  • export OgreMetalView so that a client can subclass it (#253)

  • [CIVCT] Port to D3D11 (WIP)

  • [VCT] Fix division by 0

  • [Metal] Do not crash if reflection VS had compile errors (#251)

  • Fix hang in waitForStreamingCompletion (#252)

  • Add target_orientation_mode

  • Do not invalidate frustum if old & new orientation modes are the same

  • Add RenderDoc integration to Android

  • Always enable hidden visibility on iOS

  • Better mark unimplemented statements as such

  • warning: unused variable 'hlmsManager' [-Wunused-variable]

  • warning: comparison of integers of different signs: 'Ogre::int32' (aka 'int') and 'const Ogre::uint32' (aka 'const unsigned int') [-Wsign-compare]

  • warning: unused variable 'xxx' [-Wunused-variable]

  • warning: 35 enumeration values not handled in switch: 'OT_POINT_LIST', 'OT_LINE_LIST', 'OT_LINE_STRIP'... [-Wswitch]

  • Don't use mIsTopLevel to restrict window operations, use mIsExternal instead. It is expected that windows created by Ogre could be manipulated by Ogre even if not top level. warning: private field 'mIsTopLevel' is not used [-Wunused-private-field]

  • window leak in VulkanWin32Window

  • exclude unfinished MultiSourceVertexBuffer code from build using #ifdef _OGRE_MULTISOURCE_VBO warning: private field 'mVboPoolIndex' is not used [-Wunused-private-field]

  • unused #define OGRE_LEGACY_ANIMATIONS

  • warning: private field 'mDevice' is not used [-Wunused-private-field]

  • Fix warnings when compiling with Vulkan SDK 1.2.148 from ogredeps warning: non-void function does not return a value in all control paths [-Wreturn-type] warning: 4 enumeration values not handled in switch: 'VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL', 'VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', 'VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'... [-Wswitch]

  • warning: declaration shadows a local variable [-Wshadow]

  • Remove op.vertexData->vertexBufferBinding->hasInstanceData() checking, check for numberOfInstances > 1 only

  • warning: 'xxx' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]

  • Added Vulkan_SHADERC_INCLUDE_DIR cache variable to FindVulkan.cmake to be able to use Vulkan SDK directly from Android NDK, where shaderc and glslang are provided as third party sources rather than being the part of the core SDK

  • [GL3+] Fix build error on macOS

  • [Metal] Do not crash if a shader failed when reflection (#251)

  • [IVCT] Ensure GL assigns tex slots to all mesh texture units

  • Port CIVCT to OpenGL

  • Fix incorrect calculation of vctInvResolution

  • [IVCT] Fix "Low" quality tanking performance

  • Update profiler tag names

  • Fix revoxelization bug due to wrong buffer bound for cascades > 0

  • Minimize number of wasted samplers in ImageVoxelizer

  • [CIVCT] Number of bounces is global, not per cascade

  • Add ImageVoxelizer sample (WIP)

  • [IVCT] Fix array of textures issues in multiple APIs

  • Fix Voxel visualizer glitching after updating VctLighting

  • [CIVCT] Fix out of bounds crash

  • Rework how step size is calculated

  • Add per-cascade step sizes

  • Fix brigthness problems between cascades

  • [Metal] Fix Metal validation warning on older devices

  • Add memory saving option for Terrain shadows

  • warning: unused variable 'outStr' [-Wunused-variable]

  • WireAabb::_updateTracking is called when _getCurrentSceneManager() == nullptr, so isVisible is effectively getVisible, just less efficient.

  • warning: 35 enumeration values not handled in switch: 'OT_POINT_LIST', 'OT_LINE_LIST', 'OT_LINE_STRIP'... [-Wswitch]

  • warning: implicit conversion from 'std::numeric_limits::type' (aka 'unsigned long') to 'unsigned int' changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion]

  • warning: private field 'mDefinition' is not used [-Wunused-private-field]

  • warning: declaration shadows a local variable [-Wshadow]

  • warning: implicit conversion from 'std::numeric_limits::type' (aka 'unsigned long') to 'unsigned int' changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion]

  • warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]

  • warning: destructor called on non-final 'Ogre::XxxArrayMemoryManager' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]

  • warning: definition of implicit copy assignment operator for 'xxx' is deprecated because it has a user-declared copy constructor [-Wdeprecated-copy]

  • warning: '&&' within '||' [-Wlogical-op-parentheses]

  • warning: unused variable 'xxx' [-Wunused-variable]

  • [GL3+] Fix crash when reloading a low level material after modifying it

  • Fix uninitialized variable loading params from JSON for compute

  • helper Node::_updateChildren() method

  • Fixed building error caused by mingw does not support float from_chars conversion (#249)

  • Added missing ogrestd/list.h include to OgreSTBICodec.h (#250)

  • D3D11 & Metal were not selecting depth formats

  • Add more flexible way to select default depth formats

  • Fix PsoCacheHelper creating same entries over and over again

  • Implicit copy constructor for HlmsPso was actually used, and padding bytes were not zeroed, leading to buggy lessThanExcludePassData. Also, warning: definition of implicit copy constructor for 'HlmsPso' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]

  • Change Ogre 2.3 name to Daedalus

  • Matrix3: codegen for implicit copy constructor and operator= is either the same (Clang, MSVC) or better (GCC) than via memcpy. Matrix4 is already implemented this way.

  • warning: definition of implicit copy constructor for 'Vector4' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]

  • warning: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Wimplicit-const-int-float-conversion]

  • Neon is architectural for AArch64

  • Don't poison FREETYPE_INCLUDE_DIRS if FreeType is not found

  • Deal with array Root Layouts

  • [Vulkan] Fix internal validation false positives

  • [Vulkan] Ensure bindings are always consecutive

  • [Vulkan] Fix Undefined behavior in array texture shaders (#241, #248)

  • Implement CIVCT! WIP but works!

  • [Vulkan] Dump Compute Shaders when there's validation errors

  • Fix crashes

  • Cascaded IVCT is working! (on bounces for now)

  • Fix typo

  • Implement cascades for light bounces in VctLighting

  • Add ShaderParams::Param::setManualValueEx to deal with large arrays

  • [Vulkan] Fix multidimensional GLSL arrays

  • Add multiple cascades support to Bounce Inject (WIP)

  • Prepare VctBounceInject for multi cascades WIP won't compile

  • Mesh voxelization cache can be shared by multiple VctImageVoxelizers

  • Fix issues in resetTexturesFromBuildRelative

  • [IVCT] Create VctLighting

  • [IVCT] Optimize number of barriers needed

  • Fix buildRelative not reconstructing the new rows

  • [IVCT] Fix voxelization when dividideOctants is not 1 1 1

  • Voxel was misaligned as the camera moved

  • Debug visualizer now works after buildRelative

  • Check out of bounds during partial voxelizations

  • Fix wrong Octant generation

  • [CIVCT] Fix crash due to invalid Octant

  • Fix crashes during partial voxelization

  • [CIVCT] Force a voxelization build the first time

  • Got rid of mNewRowVoxelizerJob

  • Add VctImageVoxelizer::buildRelative (WIP)

  • Add VctCascadedVoxelizer. WIP

  • [IVCT] Fix OpenGL

  • Fix assert

  • [IVCT] Apply an exponent to correct over-thickness in voxelization

  • [IVCT] Improve quality of voxelization result

  • VctVoxelizer & VctImageVoxelizer now derive from the same base class

  • Add hash for caches to v1 meshes and import it to v2

  • [IVCT] It's working!

  • Compute shader compiles now!

  • Compute jobs now expose textureN_slot to deal with GL tex slot start

  • [IVCT] Setup job's textures. WIP

  • More work on VctImageVoxelizer. Still WIP

  • [Regression]Fix uninitialized variable causing non-deterministic output

  • Add ImageVoxelizer definition to JSON

  • Add faster alternate way of voxelizing scenes (VCT) (WIP)

  • In help text of Forward3D sample, use straight apostrophe instead of curly apostrophe, which was not working at least on macOS

  • Update CSS the style in API Reference page

  • Examples documentation

  • add const to an input parameter of TextureBox::copyFrom

  • Forgot to include samples in docs in previous commit

  • Document Terra

  • [Metal]Fix crash when explicit MSAA is bound to resolve to render window

  • [Metal] Fix crash when VaoManager::mDynamicBufferMultiplier != 3

  • [Metal] Protect materialId behind lower_gpu_overhead

  • [Metal] custom_ps_uniformStructDeclaration were added twice

  • Building on Apple platforms may fail with a cryptic error

  • implement MetalWindow::setHidden for iOS, ignore external windows

  • Honor "hidden" param in MetalWindow

  • Document an oddity about D3D11 StagingTexture::mapRegion

  • Fix script error in HDR (regression)

  • Fixed "Possible misuse of comma operator here" flood of clang warnings

  • [D3D11] Support annotation in RenderDoc

  • Support annotation in RenderDoc

  • [Vk] Fix missing Const buffers ignoring initial data passed to them

  • [Metal] implement override for MetalTextureGpu::getCustomAttribute

  • [Vulkan] Fix compute shader mixup of Root Layouts

  • Add RenderSystemCapabilities::getNumTexturesInTextureDescriptor

  • Document how to control and minimize memory consumption

  • [Vulkan] Fix wrong flip when explicit MSAA is bound to resolve to window

  • [GL,VK]Fix crash when explicit MSAA is bound to resolve to render window

  • Add FocusedShadowCameraSetup::setXYPadding

  • Move firstRq/lastRq to createShadowNodeWithSettings

  • Optimize ShadowNodeHelper::createShadowNodeWithSettings on mobile

  • Fix wasteful creation of unnecessary blendblocks

  • At least mention the existence of ogre-next-deps in the frontpage

  • Fix the condition in getClosestBlockDim2d().

  • [Terra] Fix crash when there are only shadow casting spotlights

  • [VCT] Fix VctVoxelizer::dividideOctants for values other than 1, 1, 1

  • Fix VCT artifacts when voxel resolution isn't squared

  • Merge pull request #226 from OGRECave/v2-2

  • [OSX] Fix segmentation fault when creating a CocoaWindow when the external window handle is null

  • Fix iOS build

  • convert tabs to spaces

  • set up event listeners so that closing the window will quit the app

  • initial fix

  • EmptyProject: Fix CMake errors caused by extra unwanted if()

  • [Android] Fix high CPU usage when the app goes to the background

  • [Vulkan] Fix corruption when RenderTextures are destroyed (#221)

  • [D3D11] Fix assert "mDataPreparationsPending > 0" on device lost

  • Remove old scripts

  • Remove ancient templates (#222)

  • [macOS] Fix crashes in Tutorial00_Basic (#222)

  • Fixed AABB validation check exclusion criteria

  • Fix undefined behavior when rendering without a shadow node

  • std::allocator::allocate with hint pointer was deprecated in C++17 and removed in C++20, https://en.cppreference.com/w/cpp/memory/allocator/allocate

  • Fix 'Suggest braces around initialization of subobject'

  • update STB Image to 2.27* contains nothings/stb#1031

  • Fix 'Possible misuse of comma operator here' Clang warnings in public Ogre headers

  • update debugbreak.h to latest version to avoid flood of warnings due gnu_inline behavior changes in latest Clang

  • Fix Terra's point light shadows

  • Terra: Fix shadow mapping when using Z Up mode

  • Terra: Remove redundant calculation in Vertex Shader

  • Fix compiler warning

  • Fix crash on shutdown and error in Vulkan (2.3 branch)

  • Fix rare race condition where textures could be stuck streaming

  • Samples only force numThreads to 1 on OGRE_DEBUG_HIGH or higher

  • Fix MeshLod demo crash

  • [Regression] Fix Terra crash if trying to assign a datablock more than once

  • Add MIT license to Terra sample

  • [Vulkan] Workaround wrong auto mipmap gen in Qualcomm GPUs

  • Add SW mipmap generation for 3D textures

  • Improved build instructions for macOS

  • Remove old instructions

  • [GL3+] Fix crash when X11 is running but no monitor is plugged

  • [GL3+] Fix crash when X11 is running but no monitor is plugged

  • Remove dead code

  • [Vulkan] Fix leaks in implicit MSAA Render Textures

  • Fix broken ESM shadow maps on point lights

  • Fix Terra's shadow bias issues

  • Terra: Terrain can now cast shadows in point & spot light maps

  • [GL3+] add support for currentGLContext for macOS

  • Fix Apple macOS build errors

  • HlmsPbsDatablock::cloneImpl was ignoring mRefractionStrength

  • Fix crash when mTerra is nullptr

  • [Vulkan] Fix false positive assert in BarrierSolver::resolveTransition

  • Fix separate blend mode not working when material was defined by script

  • Fix crash in FastArray::insertPOD

  • Fix separate blend mode not working when material was defined by script

  • Add target_level_barrier to Compositor (optimization)

  • Fix crash in FastArray::insertPOD

  • Add visibility_mask to shadows pass

  • Add "shadows" compositor pass

  • Deal with edge case where terrain skirts could be above ground

  • Point to the right Dependencies folder for Android

  • Add Vulkan to OGRE.cmake in EmptyProject template for static builds

  • Fix parenthesis warning

  • [Vulkan] Fix incorrect report in VaoManager::getMemoryStats

  • Fix incorrect report in VaoManager::getMemoryStats

  • [Vulkan] Deallocate memory pools that became empty

  • [Vulkan] Fix StagingBuffers & StagingTextures allocating 2x-3x more memory

  • Deal with edge case where VaoManager::getMemoryStats could underreport

  • Log pool idx in VaoManager::getMemoryStats

  • Fix overreporting consumed memory in MemoryStatsEntryVec

  • Restore sizeof(LodData::Triangle)

  • Use 'unsigned' rather than 'ushort' for SubMesh indices

  • Fix false negative/positives caused by frustum culling

  • Add NearFarProjection test

  • Fix viewSpaceUnitX assumes different values among different shader languages (row-major vs column-major)

  • v1::Mesh::buildTangentVectors does not support non-triangle submeshes

  • Include DepthClamp in HlmsDiskCache

  • Fix readers-writer lock is wrongly handled with recursive_mutex and unique_lock (instead of shared_mutex and shared_lock) in STD thread provider

  • Fix whether to use the emissive map as a lightmap isn't saved in/loaded from JSON material

  • Fixed OgreConfigDialog.mm:226:19: No visible @interface for 'NSArray' declares the selector 'removeAllObjects'

  • D3D11: call CreateClassLinkage for D3D_FEATURE_LEVEL_11_1+ too

  • Replace hasNewLoadRequests with getLoadRequestsCounter

  • Get tag point from bone.

  • Fix custom_ps_posExecution piece is inserted twice in Unlit

  • [macOS] allocate arrays for table data source in config dialog initialiser

  • Update HlmsPbsDatablock::cloneImpl

  • Relax HLMS Terra constness (to let user extend the default implementation without having to duplicate all the code)

  • Fix shader compiler errors when normal maps are used in Terra

  • Fixed AABB validation check exclusion criteria

  • Added ability to create SCENE_STATIC v1::BillboardSet

  • Add TextureGpu::scheduleReupload

  • Document the cost of TextureGpu::waitForData

  • fixed build

  • [Vulkan] Refactored how the copy encoder handles texture transitions

  • reset mCustomParameter after testing it inside hasFlushPending

  • silence compiler warnings

  • extract SceneManager::reserveSlotsInGlobalLightList function* useful to avoid memory corruption on changing light type

  • avoid possible dangling pointer

  • Fix loading of 3D large textures with baked mipmaps

  • Add parenthesis to avoid doubts on operator precedence

  • Use Möller–Trumbore ray/triangle intersection algorithm* 3x faster than old one from WildMagic

  • OGRE_Load2D should accept uint2 values

  • Fix const correctness of ComputeTools

  • Build-fix: passing ArrayVector3 cameraPos and ArrayVector3 cameraDir as variable caused problems for x86 build with OGRE_SIMD_SSE2 option. Changed to passing those variables as const references instead.

  • [Vulkan] Document what's missing for future reference

  • Apply clang-format and fix a warning

  • [Vulkan] Fix switchVboPoolIndex as well

  • [Vulkan] Fix build errors

  • UB & perf penalty: runtime error: store to misaligned address 0x7ffee57f69b5 for type 'float', which requires 4 byte alignment

  • Fixed on DX switchVboPoolIndex() by passing internalVboBufferType(internalBufferType + VboFlag) to match with correct pool before index change

  • Fixed switchVboPoolIndex() by passing internalVboBufferType(VboFlag) to match with correct pool before index change

  • Pass internalVboBufferType into switchVboPoolIndex[Impl]* not yet used

  • MetalStagingTexture: fixed 'sourceOffset ... must be a multiple of the destination texture's pixel size, in bytes'

  • MeshLodGenerator: switched from pointers to indexes to reduce memory consumption on 64bit platforms, sizeof(LodData::Vertex): 280 => 216 on MSVC 16.9.4 x64

  • MeshLodGenerator: fixed unity build

  • MeshLodGenerator: properly handle non OT_TRIANGLE_LIST submeshes

  • fix build for platforms with empty OgreStableHeaders.h

  • avoid including OgreHlmsPso.h > OgreGpuProgram.h > OgreGpuProgramParams.h > ogrestd/map.h, unordered_map.h, vector.h, set.h when only enum OperationType is needed

  • Do not request mipmaps for 1px textures* asserts in Metal

  • exclude ParallaxCorrectedCubemap proxy items from scene queries

  • [Vulkan]Fix empty key in config on Linux & Android

  • Metal: remove meaningless 'resourceOptions |= 0', both MTLResourceStorageModeShared and MTLResourceCPUCacheModeDefaultCache are equal to 0.

  • Metal: properly extend range in MetalStagingBuffer::_cancelDownload to avoid lost gaps

  • Metal: properly extend ranges that have srcOffset not multiple of 4

  • Add TextureGpuManager::mIgnoreSRgbPreference

  • Add mRenderableVisible to toggle visibility at Renderable level

  • Merge pull request #192 from TaaTT4/feature/clear_coat

  • Refactor (replace spaces with tabs)

  • Replace input modifier with correspondent OGRE macro otherwise shader won't compile on Metal

  • Add clear coat IBL contribution

  • Multiply by light color AFTER the clear coat pass (like Filament does)

  • Replace LoH (used by Filament) with VdotH (not 100% sure of it, but it should be OK: as far as I know, Filament and OGRE shaders work in two different spaces)

  • Add clear coat direct lighting contribution (based on Filament implementation)

  • Add preliminary support for clear coat (PBS getters and setters, datablock load and save, Material struct additional data)

  • BRDF goes nuts with low roughness and high NdotL (#189)

  • [Vulkan] Port Dilation pixel shader

  • Do not generate shadow map code when there are no shadow maps

  • Fix shader compiler error if mesh has no normals

  • Fix shader compiler error when setShadowReceiversInPixelShader(true)

  • Optimise PixelFormatGpuUtils::convertForNormalMapping and bulkPixelConversion UNORM <=> SNORM case

  • OgreCharconv: avoid extra space printed at the end

  • OgreCharconv: Handle integer only implementations in Clang and GCC STL

  • OgreCharconv: Handle all C++17 compliant STLs

  • Avoid StringConverter::toString( i ) in hot path* it is not yet optimized on Clang and GCC, and could be slow without small string optimization

  • add license to OgreCharconv.h

  • Merge pull request #186 from makuto/fix-node-debug-settings

  • and even faster

  • StringConverter: optimised implementation via std::to/from_chars if Ogre is compiled in C++17 mode

  • StringConverter: minor cleanup

  • Fix memory corruption w/ compressed textures + AlwaysKeepSystemRamCopy

  • Fix uninitialized memory in ConfigDialog (Linux)

  • Update EmptyProject sample to support planar reflections

  • Fix wrong listenerReason in TextureGpu::_notifySysRamDownloadIsReady

  • Fix wrong assert

  • More robust way to update Entity and Item after Mesh reloading, no matter is it due to the device lost or manually invoked.

  • correct RSC_IS_TILER for Apple Silicon macOS platform

  • Fix warning declaration of 'd' shadows a member of Ogre::Plane

  • Use inttypes.h wherever possible

  • Define Ogre::uint64, etc. via ::uint64_t, etc. from <stdint.h>, if that header is available. Do not #include headers inside namespace Ogre.

  • Fix pointless warnings

  • Match the definition of uint64 with uint64_t on GCC

  • Fix some warnings

  • The same for VertexBufferBinding

  • Ensure that VertexDeclaration is destroyed by proper instance of HardwareBufferManager

  • Make first param to VertexData::VertexData(HardwareBufferManagerBase* mgr = 0) mandatory, and always pass v1::Mesh::getHardwareBufferManager() into it if any. It still could be specified as NULL to use v1::HardwareBufferManager::getSingleton(), but this decision should be explicit.

  • Consistently use v1::Mesh::getHardwareBufferManager() and v1::VertexData::_getHardwareBufferManager() rather than v1::HardwareBufferManager::getSingleton() to create nested resoures, to be able to have software only meshes

  • Prevent garbage in mEnvFeatures

  • double semicolons

  • Fixed MetalMappings::get( PixelFormatGpu pf )* PFG_D24_UNORM_S8_UINT is not always supported, particularly on Intel iGPU

  • register keyword is deprecated in C++11 and removed in C++17

  • Fixed build with XCode in C++17 mode (std::bind2nd deprecated in C++11 and removed in C++17)

  • Preserve only one instance of the OgreSmallVector

  • Move Plane::ctor() and simplest operations to header for inlining. Remove copy constructor.

  • Fix debug mode in Ogre Node

  • Make sure Ogre::Bone has same debug requirements

  • Put back IndexType in headers

  • [D3D11] Fix crash on FL11 cards

  • Fix build on C++03

  • Extract RemapInfo from Lod0Stripifier and use in v1::MeshManager::unshareVertices instead of std::map based one

  • Fixed dangling pointer in EdgeData after Ogre::v1::MeshManager::unshareVertices.

  • Add missing include file to Samples

  • Pull enum IndexType from headers that includes too much of other headers

  • OgrePlatformInformation.h header became much less interesting for everybody after moving alignment macros to OgrePlatform.h

  • Add support to filter memory usage dump by textures residency

  • Force textures in OnStorage state to return a 0 bytes occupation (otherwise a Resident > OnStorage transition returns an out of date occupation)

  • Implement MetalRenderSystem::_render() over indirect buffers. Not enabled, as without multi draw there are no performance benefits, the same as in D3D11.

  • Properly calculate mFaceCount for indexed v1 geometry

  • Pass full metric struct to the Camera

  • fixed build for platforms when OgreStableHeaders.h does not include headers

  • Do not include OgreMesh.h and OgreMaterial.h via OgreLodStrategy.h into OgreRenderable.h and OgreMovableObject.h

  • [GL3+] Fix broken SDK install of GLX/OSX/EGL headers

  • Pass both camera and lodCamera into BillboardSet::_notifyCurrentCamera, and use current one rather than lodCamera to rotate billboards, as it was in Ogre v1. That fixes the shadows from billboards.

  • [Vk] Implement RENDERDOC_WINDOW & RENDERDOC_DEVICE

  • [Vulkan] Fix overly aggressive barriers blocking too much

  • Fix Vulkan plugin not working in Release

  • Fix compiler errors in non-UNITY, non-PCH builds

  • Update Entity mWorldAabb if it was reinitialized during rendering due to the detected mesh changes.

  • remove Dependencies symlink accidentially added 3 commits ago

  • Vulkan needs to be the last loaded render system.

  • Support for binormal reflection baked into tangent.w

  • Some machinery to properly handle Unicode filesystem pathes. Write HLMS logs to writable location on WinRT.

  • [Mac] output HLMS logs to subdirectory of caches directory rather than into the app bundle. See https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/AccessingFilesandDirectories/AccessingFilesandDirectories.html

  • Add MeshLod sample

  • Fix "Corrupt chunk detected" messages

  • Fix v2 Mesh LOD thresholds not being saved to mesh

  • Fix inconsistency in custom_ps_uniformStructDeclaration pieces

  • HlmsListener needs extra guarantees for HlmsDiskCache to work

  • [Vulkan] Fix race condition destroying API handles

  • [Vulkan] Fix dangling API handles sent to Vulkan driver

  • Fix roughness is used instead of perceptual roughness in default BRDF

  • Add support to set cameras default sort mode

  • [Vulkan] Fix handles leaking

  • Fix crash in TextureResidency test sample

  • Add TerraSharedResources::freeAllMemory

  • Fix inaccurate documentation detail

  • Add support for transparency sort policy per-camera

  • Add memory saving functionality to Terra for low memory devices

  • [Vulkan] Fix dangling pointer

  • [Vulkan] Bogus Out of Memory errors in certain GPUs

  • Add support to set renderables default render queue sub-group

  • Check for directory and symbolic links in build scripts.

  • [Vulkan] Fix bad assert never triggering

  • Alpha tested textured shadows could be wrong (#163)

  • Clarify what a Vulkan error message is about

  • Fix Vulkan validation error

  • gcc 10.2 requires a separate forward declaration

  • No normals means no normals. TODO: we need probably to disable normal offset bias in this case

  • Metal: added CAMetalLayer.presentsWithTransaction support

  • Fix Terra datablock destroys its sampler blocks twice

  • EmptyProject could cause lots of errors in Ogre.log

  • it's bad idea to pass mAlphaToCoverageEnabled to shadow caster pass* it never produce alpha, only depth

  • forward-declare STLAllocator in forward declarations of Std* classes

  • missing header inclusion for vector type

  • Fixed macOS build

  • AlphaToCoverage support in Metal

  • AlphaToCoverage support in HLMS

  • Catch up HLSL/Metal fragment shaders with their Vulkan corresponding

  • Fix Forward3D light list isn't declared as a read-only buffer (and Terra HLMS provides Forward3D data in wrong order)

  • Fix height map texture slot is hardcoded to 0

  • Fix perceptualRoughness field of PixelData struct isn't set anywhere in fragment shader

  • MetalHardwareXxxBuffer::copyData should update shadow buffer too

  • Avoid shadow square artifact with exponential shadow maps

  • Make hacky code a little bit safer

  • Fix custom_vs_posExecution being inserted twice into the VS

  • Do not define misleading OGRE_CPU_E2K as Elbrus 2000 is currently handled under OGRE_CPU_X86 umbrella, even in private ISA mode.

  • Fixed D3D_DRIVER_TYPE_WARP creation and added D3D_DRIVER_TYPE_REFERENCE support.

  • E2K: added initial support of MCST Elbrus 2000 CPU architecture e2k (Elbrus 2000)* this is VLIW/EPIC architecture, like Intel Itanium (IA-64) architecture.

  • Fixed _detectCpuIdentifier on iOS, added CPU_SUBTYPE_ARM64E support, masked cpusubtype as appropriate, fixed NEON detection on Apple DTK

  • [D3D11] Log effective device feature level

  • Declaring Texture2DMS without explicit sample count is SM4.1 feature tied to ld2dms instruction. Shaders failed to compile for ps_4_0 target when ps_5_0 aka FL11.0 is unavailable.

  • Fix spelling typo (#148)

  • Fix build errors when OGRE_CONFIG_DOUBLE is on

  • CMake: do not add atmomic library as dependency, if Clang compiler is used

  • [Vulkan] Merely flushing may still need to wait on some semaphores

  • [Vulkan] Fix unused variable

  • [Vulkan] Fix GPU deadlock/freeze

  • Silence warning on pointless semicolons

  • OgrePlatformInformation.cpp: fixed build on MIPS architecture

  • junk code removed

  • [GL3+] Fix rendering errors due to shaders failing to link

  • RenderSystems/Vulkan on UNIX should link against X11-xcb

  • CompositorPassQuad: in destructor clear texture names that were set in .execute(), to avoid problems during material reloading

  • BufferPacked: avoid exception "Last frame called map( bAdvanceFrame = false ) but didn't call advanceFrame" after large mCurrentFrame increment on device stalled

  • [Vulkan] Do not hardcode mDynamicBufferMultiplier to 3

  • Avoid getNameForMicrocodeCache collision: D3D11HLSLProgram supports storing several shaders in one source file, selecting required by mEntryPoint.

  • Avoid crash due mHasPlanarReflection && !mPlanarReflection situation with later NULL pointer dereference. Do not set planar reflection texture for shadow caster shaders.

  • STB: fix building by MSVC for Windows 10 on ARM. nothings/stb#1031

  • Enable NEON for Windows 10 on ARM

  • Use native vrndq_f32 on ARM64 for efficiency and to avoid possible overflow

  • Use native vdivq_f32 on ARM64

  • ARM: improve codegen for wellknown constants* many of them could be constructed with single instruction + immediate half float like "fmov v0.4s, #3.0" directly in register at usage site rather than being loaded from 16B buffer, but only Clang is clever enough to evaluate vdupq_n_f32 intrinsic at compile time to be able to do this. With explicit init list both Clang and GCC generate optimal code avoiding loading 16B.

  • #define __OGRE_HAVE_SSE 1 for iOS simulator. Don't check for compiler support too* x86 has SSE since 1999.

  • Improve codegen for vshuf_f32 emulation of _mm_shuffle_ps by using the fact that shuffle mask is build time constant expression in SSE. Now depending on mask Clang generates ~3 instructions, GCC ~5

  • Fixed vshuf_f32 ARM emulation of _mm_shuffle_ps SSE instruction. Was this bug the reason of vshuf_f32 not being used by Ogre?

  • Do not publish root files to github pages

  • Fixed statistic for tristrips

  • Fix lack of double to float cast

  • [Vulkan] Fix build errors in 32-bit builds

  • [Vulkan] Fix edge case when calling VaoManager::update twice

  • [Vulkan] Fix semaphore leaks when resizing

  • Dump workarounds in use to log

  • Dump GPU information to log

  • [Android] Improper application of Adreno D32 workaround

  • [Android] Fix samples build error

  • [Vulkan] Add workaround for Adreno driver reporting

  • [Vulkan] Workaround Adreno D32_FLOAT bug

  • DynamicCubemaps sample was rendering opaques in the transparent pass

  • Let not copy TextureUnitState vtbl, to keep compiler happy

  • Set actual resources for CompositorPassCompute::mComputeJob before analyzeBarriers as mComputeJob could be shared by several CompositorPassCompute

  • Always use __builtin_ctzll

  • [Vulkan] Anisotropy of 1 means anisotropy is disabled

  • Do not force fullscreen when not requested

  • Do not push the whole repo to gh-pages

  • Fix doc typo

  • Debug properties dump should stay enabled in debug builds

  • Fix README formatting

  • Update README

  • Update output to 2.3

  • Put API docs under /api/2.2/ when publishing to gh-pages

  • [Linux] xcb_aux.h is not needed

  • Add Android build instructions

  • [Metal] Fix SSAO sample

  • Fix Metal shader compiler error

  • Fix build errors on macOS

  • Limit D3D11_SAMPLER_DESC.MaxAnisotropy to 2x on FL9.1 hardware

  • Added Vulkan to EmptyProject's scripts

  • Fix incorrect mappings for VET_USHORT2 & VET_USHORT4

  • Fix false positive assert

  • Fix crash introduced in last commits

  • Fix uninitialized variable

  • Account for bufferImageGranularity

  • Terra should only use R16_UINT if UNORM is unsupported

  • Avoid crash due dangling SubEntity::mSubMesh pointer after mesh reloading

  • MeshLodGenerator: avoid double deletion in Lod0Stripifier

  • Fix MaterialBuf isn't binded to vertex shader in HLMS Unlit

  • Add support to remove a skeleton definition from its memory manager

  • MeshLodGenerator: use mesh provided HardwareBufferManager to create hardware buffers

  • Fix D3D11 regression in Compute Shaders

  • Fix leaks on shutdown and uninitialized ptrs

  • Fix leak in Vertex Shaders

  • Fix out of bounds read in SPIRV-Reflect

  • Fix Voxelizer not working in D3D11 and Metal

  • Default to largest resolution, not smallest one

  • Fix Voxelizer's compute shader compiler error on certain GPUs

  • Properly sort resolutions in Windows

  • Expanded RootLayout documentation

  • Fix compiler error in D3D11

  • Implemented lots of missing Window functionality

  • Fix SSAO in Android

  • Improve TextureGpuManager::checkSupport

  • Fix crash when runing compute shaders

  • Fix framerate in Android samples

  • Fix more Android samples crashing at startup

  • Fix crash at startup for most Android samples

  • Fix bug while generating Android samples

  • Added more samples

  • Ported most samples to Android (WIP)

  • Fix NotTexture flag being ignored

  • Fallback to SW mipmap generation if HW can't do it

  • Filter out PFG_R10G10B10A2_UNORM as Uav in Metal on iOS

  • Vulkan now supports preTransform to avoid performance degradation

  • Fix crashes when going to background

  • Add TextureGpuManager::checkSupport

  • Ported Terra to Android (WIP)

  • Fixed invalid VET_COLOUR component order on Metal

  • Add OGRE_VK_WORKAROUND_ADRENO_UBO64K

  • OGRE_CPU: cleaned definition to fix build for Apple Silicon aka macOS on ARM64; moved to Platform.h as it is already used there.

  • Fix param buffer bindings exceeding max const buffer size

  • Fix VkBuffers binding to memory types that are not allowed

  • Fix compiler errors

  • Do not override Entity materials restored in buildSubEntityList(..., prevMaterialsList) with the ones from Mesh.

  • Mark CubemapProbe as dirty and eventually update after device lost event

  • Do not mix depth and stencil aspects when sampling textures

  • Fix multiple bugs particularly manifesting on Android

  • More Android readiness

  • Added missing ASTC format mappings

  • Fix compiler error when not using static builds

  • More Android readiness

  • Minor preparations for Android samples

  • Fix crash (nullptr in assert)

  • Vulkan is runing on Android!

  • Fix crash when for some reason there are no enumerated resolutions

  • More Android fixes

  • Do not expose internal headers when including Vulkan

  • Fix compiler warnings

  • Added Vulkan Android support (WIP)

  • check_cxx_compiler_flag -msse gives a false positive on Android

  • Fix android build when targetting Android N API

  • Fix SSR sample broken in all platforms

  • Revert "Fixed memory corruption due dangling ComputePsoCache::job pointer"

  • Fix crash at shutdown if Compute Shaders are used

  • Fix D3D11 build error

  • Fix validation error on certain transition chains

  • Fix unnecessary stalls and warnings

  • Fix validation errors when transfer GPU -> CPU data w/ a regular texture

  • Fixed memory corruption due dangling ComputePsoCache::job pointer

  • Root now asks for an app name so we can tell the APIs

  • Do not use descriptorsets for Terra's heightmap

  • Fix indirect draw of strip-only primitives

  • Fix incorrect RootLayout when no buffers are used

  • Fix incorrect assignment of texture slots

  • mObjectData.mWorldAabb is corrupted in Items and Entities on device lost, so we need to update it for static objects too.

  • Recreate CubemapProbe::mConstBufferForManualProbes on device lost

  • Release ParallaxCorrectedCubemap::mStagingBuffer on device lost

  • Fix Terra's barriers

  • Lots of work on getting Terra working on Vulkan (WIP)

  • Terra's shadow texture for PBS objects is no longer hardcoded

  • More porting efforts for Terra

  • Fix bad location generation for extra TEXCOORD attributes

  • Began porting Terra to Vulkan

  • Fix improper destruction of HlmsCompute

  • Destroy buffer views when destroying VulkanTexBufferPacked

  • Fix memory leaks

  • Destoy descriptor pools on shutdown

  • Fix leaking VkRenderPass

  • Fix leaking semaphores every frame

  • Destroy command pools on shutdown

  • Free memory on shutdown

  • Fixed ParallaxCorrectedCubemap::mCopyWorkspace leaking on repetitive setEnabled( true > false > true ...

  • Ported ReconstructPosFromDepth sample

  • Poses uses TexBuffers once again

  • Fix Decals' shader compiler error

  • Ported IFD raster to Vulkan

  • VCT voxelizer now properly runs with ReadOnly buffers

  • [Vk] Set mUavBufferAlignment

  • Ported VCT Voxelizer to use ReadOnlyBuffers

  • RenderSystem::get/setSharedListener => add/removeSharedListener (would also be used by ParallaxCorrectedCubemap)

  • Added ReadOnly buffers

  • Make PlanarReflection sample compatible with device lost event

  • Naming fixes

  • Remove unused copy-paste leftover option from GL3+

  • [Win32] shaderc's debug libs would never be found

  • Added missing FindVulkan.cmake

  • Eliminate asm_math.h Naive approach for sqrt on modern compilers faster by 25% in usual fp mode, and by 20x in /fp:fast.

  • Fixed noisy warnings "Warning C4334 '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)" from OgreBitset.h header. Also fixed issues with 64bit _internalDataType. Note* type of shift expression is determined from left operand only.

  • Fixed printf warnings: Till C++11 we have no portable way to printf size_t values, as %zu is not available on old VC compilers. Use unsigned long instead, matching currently used format specifier %lu. Note that size_t != unsigned long on Win64.

  • Use either !(n % 4) or !(n & 3) to check that n is divisible by 4

  • Properly reload Meshes v2 on device lost* most of the code is not ready to see resource in LOADSTATE_UNLOADED_MARKED_FOR_RELOAD

  • Detect VulkanSDK rather than hardcode paths

  • Factor out ForwardPlusBase::_releaseManualHardwareResources() and call it on device lost to avoid VBOs leaking

  • Fix D3D11 compiler error

  • Resized the linux config dialog

  • Removed dead variable

  • Improved validation layer detection

  • Vulkan now doesn't crash if validation layers are not present

  • Allow picking Vulkan device

  • Mask away unnecessary read flags from srcAccessMask

  • Fix crash when selecting other RenderSystems after Vulkan

  • Mask away unsupported shader stages

  • Use std::min,max rather than Ogre::min,max* codegen is much better on modern compilers generation

  • Fill supported capabilities

  • Use std:: versions of standard math functions, as presence of float overloads in global namespace is not guaranteed (absent on MSVC without , absent in GCC and Clang without <math.h>)

  • At least MSVC2019 does not declare global ::xxx(float) overload in math.h, leading to inefficient codegen, so #include and use std::xxx(float) overloads guaranteed by C++98.

  • Ported visualizer shaders

  • Fix crashes during shutdown (still leaks)

  • Do not present more than once per frame

  • Fix window resizing

  • Fix dangling API handles when stalling

  • Fix copyTo when only one of the textures is BarrierSolver-managed

  • Fix incorrect binding point for ifdDepth

  • Compositor now uses Compute Job's analyzeBarriers()

  • Fix const buffers not always present in Compute Shaders' root layout

  • Fix CONST_BUFFER macros in Vulkan to use ogre_Bn bindings points

  • Fix CornellBox's broken shadows

  • Fix VCT test which stopped working in GL3+

  • Generate proper descriptors for textures when binding in GENERAL layout

  • Transition VCT & IFD textures so they can be used in rendering

  • Fix barrier errors when a texture is both as a texture and UAV (WIP)

  • Fix CS compiler error

  • Fix layout bugs caused by _autogenerateMipmaps

  • Fix false positive assert when destroying DescriptorSetUav/Texture2

  • Fix wrong automatic RootLayout generation in compute shaders (v2)

  • Add missing capability

  • Fix wrong automatic RootLayout generation in compute shaders

  • Fix bad JSON output

  • GpuProgram::setRootLayout should dump root layout on errors

  • Fix improper access flags

  • Fix incorrectly set Access flags in UAVs (VCT)

  • Fix crash when DescriptorSetSampler contains nullptrs

  • Changed the algorithm for deciding memory types and managing it

  • Port lots of VCT compute shaders

  • Fix compiler error in Windows

  • Ported multiple compute shaders to Vulkan v2

  • Ported multiple compute shaders to Vulkan

  • Fix halftone crash

  • Fix MotionBlur crashing

  • Fix validation warnings when using 1D textures

  • Ported most postprocessing shaders to Vulkan

  • Ported morph animations to Vulkan

  • Fix linking error

  • Ported barrier changes to other RenderSystems

  • Fix planar reflections being inverted

  • Fix false positive asserts in non-Vulkan RenderSystems

  • Fix broken build when planar reflections are disabled

  • Fix crash when switching from Vulkan to GL3+

  • Fix Compute-based Mipmap generation's lack of barriers & transitions

  • Planar Reflections is starting to work (WIP)

  • Fix Refractions demo when using MSAA

  • Fix validation warnings in PccPerPixelGridPlacement

  • Refractions sample is now working!

  • HDR SMAA sample is now working

  • Ported IES light profiles

  • Ported SSAO to Vulkan

  • SMAA sample now fully working

  • Ported SMAA to Vulkan (WIP)

  • HDR + MSAA sample is now working

  • Ported HDR sample to Vulkan

  • Try to reuse passes as much as possible like we do in Metal

  • Added TextureGpuManager::hasNewLoadRequests() API to complement waitForStreamingCompletion so that ideal single frame could be rendered even if texture load requests were added during rendering itself.

  • Improved performance of < operator

  • Implemented VSync

  • Fix mappings from Ogre's StoreActions to Vulkan's

  • MSAA is now working correctly

  • Propertly enumerate resolution and refresh rates in X11

  • Implemented VulkanXcbSupport

  • Added config window. WIP regarding the MSAA support.

  • Restore CompositorManager2::mSharedTriangleFS,mSharedQuadFS after device lost

  • Fix calculateFirstDirtySet returning false negatives

  • Fix validation error when nothing used is dirty

  • Fix incorrect RootLayout when using manual PCC probes

  • Multiple fixes

  • LocalCubemapsManualProbe sample now works

  • Avoid unnecessary heap allocations

  • Fix several broken samples

  • ibl_specular pass now works!

  • Fix GL3+ compute shader error

  • Use macro instead of a function since it's possible

  • Require GL_EXT_samplerless_texture_functions extension for all shaders

  • Tightly pack weights in gaussian blur compute shader

  • Do not leak hardware resources on device lost event in ManualObject2

  • Do not reset material name when BillboardSet::setDatablock called from BillboardSet::setMaterial with low level datablock.

  • Fixed Renderable::getDatablockOrMaterialName() so that old style materials restored properly on device lost event

  • Optimize shaders in release, generate debug info on Debug

  • Fix VulkanDescriptorSetTexture2 setting up wrong expected layout

  • Implement VulkanPixelFormatToShaderType

  • vk_comma definitions were swapped between GL3+ & Vulkan RS

  • Fix _setTexturesCS not being implemented

  • Ported many shaders to Vulkan

  • Fix build error when not using precompiled headers or UNITY builds

  • Document RootLayout

  • TutorialCompute02_UavBuffer sample now works

  • Easier syntax

  • Automatically generate root layouts for Compute Shaders

  • Various porting improvements

  • Fully implemented DescriptorSetTextures

  • Fix weird indentation in license header

  • Use baked samplers for graphics too

  • Added DescriptorSetSampler support

  • Fix crash on all samples

  • More compute shader resource binding support

  • I LOVE the override keyword

  • Added support for DescriptorSetUav (WIP)

  • Make ParallaxCorrectedCubemap::mProxyMesh reloadable

  • All meshes v2 should be unloaded first, then VAOs released, and then meshes reloaded using VAOs created on new device.

  • Assert that all VBOs are destroyed after device lost event. Duplicate code removed.

  • Avoid IDXGISwapChain leaking on device lost event

  • Avoid ID3D11UnorderedAccessView leaking on device lost event

  • Began work on Compute Shaders

  • Textures were consuming ridiculous amounts of memory

  • Accidentally broke Linux build

  • Some Windows build improvements

  • Do not stall every frame

  • Clarify what the assert is doing

  • Fix dumpProperties when loading from cache

  • Fix HlmsDiskCache errors in Vulkan

  • Fixed issues with copy operations in PCC

  • Moved main BarrierSolver into RenderSystem

  • Add more information when an unexposed texture is encountered

  • Added validation of our own when a texture is not exposed

  • Fix multiple barrier bugs

  • Implemented _autogenerateMipmaps

  • Set DiscardableContent by default on compositor textures

  • Fix uninitialized variable

  • Allow copy operations on textures managed by the Compositor

  • Fix validation errors between frames due initial conditions mismatch

  • Fix missing bit

  • Barrier refactor

  • Do not initialize glslang twice

  • Fix uniform params beyond the first one not working

  • Simplified mVertexInputs

  • If a vertex attribute is provided but not present in shader it's not error

  • Silence clang warning

  • Fix compiler error

  • CustomRenderable sample now working under HLSL.

  • Shader compilation under HLSL working.

  • Fix misc errors

  • Store ShadowNode's barriers in PassScene

  • Select best DefaultDepthBufferFormat

  • createDepthBufferFor expects to set DefaultDepthBufferFormat

  • Improve barrier setup in CompositorPassIblSpecular

  • Fix wrong Ogre -> Vulkan mapping

  • Ported multiple shaders to get PCC/LocalCubemaps support

  • Fix crash when first descriptor pool is exhausted

  • Fix flicker in TutorialSky_Postprocess

  • Fix StereoRendering sample

  • Removed harmful barrier

  • Only set a window to LAYOUT_PRESENT_SRC_KHR in the last pass

  • Ported sky postprocess shaders, however the sample doesn't run yet

  • Add depth clamp support

  • Implemented indirect rendering

  • Fixed v1 draw calls

  • Implemented _renderEmulated( const CbDrawCallStrip *cmd )

  • Implemented VulkanAsyncTextureTicket

  • Added missing error check

  • Implemented VulkanAsyncTicket

  • Decals are working in Vulkan

  • Fix some textures randomly failing to upload

  • Fix area lights

  • Fixed GL3+ to work with latest changes

  • VulkanRenderPassDescriptor now shares FBOs when possible

  • Refactored VulkanRenderPassDescriptor to make it easier to understand

  • Misc shadow mapping fix

  • Fix Crash on shutdown if cancel is selected (#126)

  • Default to SW mipmap generation until we've implemented HW mipmap gen

  • Fix build with precompiled shaders

  • Add texture coordinates to (non-v1) Rectangle2D

  • Do not ask for marker extension in Release

  • Fix StagingBuffer overwriting source buffer when downloading

  • Fix crash when no MiscParams are passed

  • Removed more log spamming from already implemented functions

  • Fix mFrameCount incrementing +2 per frame

  • Fix corrupted dummy textures

  • Added SDL2 support to Linux

  • Add missing srcStage

  • Removed logging of functions that have been fully implemented

  • All TextureGpus now share ImageView Ptrs with pool owner

  • Implemented clearFrameBuffer

  • Implemented ResourceTransitions

  • Fix for invalidated itor usage after erase that caused crash.

  • Ported some shadow mapping code to Vulkan

  • Fix incorrect bindings. Forrward+ samples now begin to work

  • Comment clarification

  • Fix more delayed destruction bugs

  • Fix dangling pointers

  • Execute all mDelayedFuncs in _notifyDeviceStalled

  • Delay API handle destruction until it's no longer in use by the GPU

  • Fix void* function not returning anything!

  • Fix aspect masks during copyTo

  • Fix incorrect bufferRowLength on textures

  • Use the Vao code from Metal, not the one from GL3+

  • Fix streaming TextureGpus returning a null ImageView

  • Fix some errors when copying between textures

  • Fix flipped logic in _isDataReadyImpl

  • More port changes to Pbs shaders

  • Fix VulkanRootLayout::findBest giving false negatives & crashing

  • Dump root layouts when an incompatibility is found

  • Added code that is present in all TextureGpu implementations

  • Added VulkanRawBuffer

  • Fix broken reverse depth

  • Add depth buffer support to X11 (WIP)

  • Cosmetic change

  • Basic VulkanTextureGpu::copyTo() implementation. Not sure if it handles all the cases correctly.

  • Added CPU_READ_WRITE flag

  • Merge Hotshot5000 changes

  • createView should use mDisplayTextureName, not mFinalTextureName

  • Implemented TextureGpu AutomaticBatching

  • Removed redundant calls to bindDrawIdVertexBuffer

  • Fix flipped culling

  • Hlms now programmatically generates the required root layouts

  • Added ability to programmatically specify RootLayouts

  • Fix error msg

  • Fix crash when Vulkan is not selected

  • Overlay's font texture is now properly bound!

  • Removed dead code

  • Code style changes

  • Fix deadlock

  • Fix crashes caused by missing endEncoder calls

  • Fix crash in VulkanStagingBuffer when destroying fences

  • Tutorial02_VariableFramerate is working! (crashes after a few frames)

  • Set mTableDirty = true when required

  • Vulkan's NDC origin is weird. Force RenderWindowSpecific on all RTTs

  • Blank dummy textures are now properly created

  • Fix texture creation sometimes messing up buffer memory

  • Deallocate memory when TextureGpu is unloaded

  • Texture allocation now goes through VaoManager

  • Fixed compilation for Windows ARM64

  • Use the internal texture type, not the fake one

  • Add dummy handles

  • All shader stages now support parameters

  • Updated buildConstantDefinitions to the new simplified rules

  • Added getCopyEncoder barriers' documentation

  • Fix incorrect window texture resolution in windowed mode in OpenGl

  • Fix params buffer not correctly binding

  • Add support for const & tex buffers, and also param buffer

  • Added vertex semantics to vertex shaders

  • Implemented waitForSpecificFrameToFinish & isFrameFinished

  • Added descriptor pool reuse

  • Added isAvailableInCurrentFrame to pools

  • Create VulkanDescriptorPool (currently leaking)

  • Fix generateRootLayoutMacros outputting the wrong binding slots

  • Fix off by 1 error

  • Fix VulkanRootLayout::parseSet

  • Start implementing the GlobalBindingTable

  • Fix: VulkanStagingTexture was ignoring internalBufferStart and vboIdx

  • Fix for deallocating the vbo buffers for staging and texture buffers in VulkanVaoManager.

  • Root layout now can bind/emulate D3D11/Metal style resources (WIP)

  • Added VulkanDescriptorPool (WIP)

  • Refactored descriptors to use user-defined Root Layouts

  • Add preprocessor defines to Vulkan GLSL shaders

  • Validate shader bindings

  • Updated build scripts gen

  • Fix crash at shutdown in TextureUnitState

  • Fix bug with compositor texture referenced from TextureUnitState

  • Added VulkanProgram::parseNumBindingsFromSource (WIP)

  • Use forward declarations

  • Fixed multiple bugs in StagingBuffer

  • Bind v1 index buffers (WIP)

  • Added missing getCopyEncoder calls

  • Added VulkanProgram::getLayoutForPso

  • Fixed VulkanTextureGpu to be more like D3D11TextureGpu

  • Fix image barrier never being issued

  • Incorporated many of Sebastian's improvements

  • Detect failure to create Dependency directory symlink

  • Removed duplicated code

  • Document default render queue ids

  • Fix typo RenderToTexture in docs

  • Cleanup mStreamingData.partialImages.sysRamPtr in abortAllRequests

  • unbalanced parentheses in Hlms Unlit Metal shader

  • Fixed crash in v1::BillboardSet::_destroyBuffers > Renderable::_setHlmsHashes in debug builds

  • Avoid crash on shutdown when texture streaming is still in progress* stop texture streaming thread before Archive and image codecs destruction

  • fixed HlmsPbsDatablock::cloneImpl()

  • Added per-bone granularity to setOverrideBoneWeightsOnActiveAnimations

  • Added SkeletonAnimation::setOverrideBoneWeightsOnActiveAnimations

  • Removed dead code containing ENABLE_INCOMPATIBLE_OGRE_2_0 (#111)

  • Merge branch 'unlit_any'

  • Remove Metal piece file from Unlit

  • BillboardSet: Unset Hlms hashes after manually clearing mHlmsDatablock

  • Enable wireframe in Metal

  • Print the errornous pixel format

  • Avoid crash in BillboardSet::getRenderOperation after device lost

  • Fix disappearing shadows when sun is 0 -1 0 (#107)

  • Parent commit contained the wrong fix

  • Fix assert while parsing JSON

  • Unit Tests now working on Windows

  • Actually fix Windows build this time

  • Fix Windows build

  • Added unit test section to README

  • Compile correctly disabling OGRE_CONFIG_ENABLE_JSON (#108)

  • Cover all samples (#108)

  • Fixed buffer overflows in samples

  • Regression: shader compiler error when using morph targets

  • Forgot to add InstantRadiosity's JSON

  • [UnitTests] Added ut_skip_dump to CLI

  • [UnitTests] Added lots of new samples

  • [UnitTests] Keycodes need to be int32

  • [UnitTests] Block all input while in playback mode

  • UnitTesting script is working! (#108)

  • Fixed warning

  • FPS display no longer causes non-deterministic dumps (#108)

  • Added API CLI setting

  • Added UnitTesting scripts (WIP) (#108)

  • Added minor documentation

  • Append frame idx prefix to dumped textures in Unit Test

  • Playback didn't actually load frame activity

  • Fixed JSON output. Fixed crash at startup while recording.

  • Started integrating the UnitTest class into samples

  • Added unit testing mode for all samples (WIP)

  • [D3D11] Survive device lost while streaming textures* Ctrl+F5 in Test_TextureResidency

  • Regression: shader compiler error with shadow maps

  • Documented MSAA explicit resolves

  • Fixed reflections on D3D11+Metal

  • Fixed Metal

  • Ported to Metal

  • Ported to D3D11

  • Fixed broken shader gen when using texture arrays

  • Started unifying Unlit's PixelShaders (WIP)

  • Fix shared depth buffers leaking (#103)

  • Merge branch 'shadow_bias_improve' (Close #100)

  • Fix Forward+ overriding shadow casting lights' visibility

  • Fix regression crash in V2Mesh (#105)

  • Fixed shadow acne in D3D11 (#100)

  • Added depth_clamp to JSON materials

  • Regression: point light shadows not working correctly (#100)

  • Multiple shadow mapping improvements (#100). See description

  • Fix stable PSSM outputting the wrong min/max range

  • [D3D11] Throw if Map() failed due to to the lost device

  • use exception safe buffer unlocking everywhere

  • Changed the default values of mShadowConstantBias and constantBiasScale

  • Fix crash in Terrain vertex shader due to Normal Offset Bias

  • Removed setShadowMappingUseBackFaces

  • Implemented normal offset bias (#100)

  • Bumped version to 2.3

  • Added Instanced Stereo to Unlit

  • Previous commit broke D3D11 & Metal support for Unlit. Fixed

  • Unififed vertex shaders of Unlit Hlms

  • Prefer MeshManager::createByImportingV1() rather than Mesh::importV1() to keep mesh reloadable on device lost event (all other samples)

  • Prefer MeshManager::createByImportingV1() rather than Mesh::importV1() to keep mesh reloadable on device lost event

  • Force device re-election via Ctrl+F5 in samples* simulates lost device

  • Reinit Item and v1::Entity preserving materials after mesh being reloaded on device lost event

  • [D3D11] Recreate mDrawId buffer after device lost event

  • [D3D11] Destroy texture pools and properly reload textures

  • [D3D11] Release VBOs on device lost event and avoid crash on exit due to the orphaned vboIdx

  • [D3D11] Avoid hang in TextureGpuManager on exit via Alt+F4 if the device lost event was previously handled

  • Reload manual texture inside Ogre::Font on device lost event

  • [D3D11] Reload v2 Meshes and reconnect Items with VAOs of reloaded meshes. Fixed fireDeviceEvent, so that it will reach and reinitialize Overlay system.

  • [D3D11] Release the rest of ID3D11Buffers. The basic idea is that buffers would be destroyed by high level owners like MeshManager as part of notifyDeviceLost and their notifyDeviceRestored would not be called. High level owner will allocate new buffers as part of restoration process.

  • [D3D11] Release frame fences in D3D11VaoManager* source of leaked ID3D11Query

  • [D3D11] Release cached ID3D11ShaderResourceView and ID3D11UnorderedAccessView on device lost event. Leaked summary looks like this:

  • [D3D11] Release blank and staging textures in D3D11TextureGpuManager on device lost event. Leaked summary looks like this:

  • [D3D11] Use HlmsManager::_changeRenderSystem() API to release and reaquire RS and device dependent resources on device lost event. Leaked summary looks much better:

  • [D3D11] Dump summary of leaked resources on device lost event, right now for PbsMaterials sample it looks like

  • [D3D11] device lost handling for D3D11WindowSwapChainBased, D3D11TextureGpu, D3D11RenderPassDescriptor

  • Implemented a lot of buffer management code related to VaoManager (WIP) StagingBuffer changes not pushed. Won't compile Affects #44

  • Bind PSOs Started memory management in VaoManager.

  • Bugfix: Validation layers complain about uninitialized variables in blend block Bugfix: Backbuffer always starts in layout undefined Bugfix: Accidental new[] causing uninitialized variables (and leaks) Default to enablePrimitiveRestart = false;

  • Bugfix: Wrong if logic checking for success of SPIRV reflection Bugfix: Wrong size of the SPIRV bytecode sent to SPIRV-Reflect Bugfix: Removed dead function Linked against more Vulkan dependencies

  • Register VulkanProgramFactory so that GLSL shaders can be compiled Link against all glslang dependencies

  • Create dummy vkRenderPass for PSO creation Created VulkanCache HlmsPassPso now also contains resolve information

  • Initialize most of PSO entries.

  • Integrated glslang to compile GLSL into SPIRV (WIP) Integrated SPIRV-Reflect to obtain data from SPIRV bytecode (WIP) Started implementing PSO creation Descriptors are analyzed and merged, in order to create PSO Compiles, probably won't link in some compilers

  • Added FastArray::append

  • [Metal] Removed dead code

  • Handle swapchain changes Removed TODOs that have already been done

  • Bugfix: Tutorial00 would try to render a frame even after the window was closed Redirect Vulkan debug messages to the Log Fixed crashes and race conditions on shutdown

  • Fixed swapchain destruction on shutdown

  • Recycle semaphores It appears the are no longer leaks every frame during Vulkan rendering Fixed mFrameCount being incremented prematurely

  • Second attempt to prevent AppVeyor from trying to build the Vulkan branch

  • FastArray::erase and erasePOD shouldn't perform a potentially expensive memmove if there's nothing to remove

  • Recycle command buffers. This fixes the biggest memory leak. Semaphores are still being leaked though.

  • Perform some rudimentary level of GPU -> CPU synchronization. Now clear colour sustains itself! (doesn't crash) It does crash on exit though. Also it is leaking command buffers and semaphores per frame.

  • Move code out of VulkanDevice into VulkanQueue

  • Assume graphics queue is also present for now Semaphore logic was flipped The wrong cmd buffers were being submitted Clear colour appeared!!! Shows for one frame then crashes, but it's progress

  • Fixed multiple crashes VulkanVaoManager::getAvailableSempaphores was not tracking created semaphores for recycling (recycling still WIP)

  • Implemented VulkanVaoManager::getAvailableSempaphores Refactored common error checking into checkVkResult() macro

  • Massive update to Vulkan RS Implemented RenderPassDescriptors (WIP) Lots of improvements to VulkanDevice (WIP) Lots of improvements to VulkanWindow and related (WIP) Will build, but may not link on some compilers. Not all functions are implemented.

  • Create swapchain

  • Initialize queue priorities (error caught by validation layers)

  • Check return values from Vulkan for errors Fixed init error in Mesa (missing VK_KHR_surface extension passed to instance creation) Create XCB KHR surface (WIP) Enable validation layer in Debug (WIP, will fail to create device if validation layer is not present)

  • Set missing mQueues to nullptr

  • Release Vulkan devices on shutdown

  • Added VulkanDevice (WIP) Added GPU_IMGTEC vendor (PowerVR)

  • Started Vulkan RenderSystem It's mostly an empty skeleton based on NULL and Metal RenderSystem

Don't miss a new ogre-next release

NewReleases is sending notifications on new releases.