gitlab jeseibel/distant-horizons 2.1.0a

25 days ago

Main

Highlights:

  • MC 1.20.3, 1.20.4, 1.20.6 support
    • No forge support for 1.20.6 due to Forge compiler issues
    • Added NeoForge support for 1.20.6
  • Massive memory decrease, especially at high render distances
    • 1024 at medium can be loaded with 4 GB of memory
  • Massive database file size decrease
    • Note: This will only affect new worlds, old databases will be migrated to the new format, but have to be manually vacuumed to shrink their file size.
  • Frustum culling
  • Fixed rendering hollow structures
  • Up the api version number 1.0.0 -> 2.0.0
    • This means there were some breaking API changes
  • World gen doesn't regenerate the same terrain twice
    • World gen also starts faster after loading into the world.
  • API methods needed for Iris 1.7.0 support

Core DH Changes

Additions:

  • MC 1.20.3 / 1.20.4 support - coolGi, James
  • Frustum culling - NULL
  • New rendering option so grass fades to dirt - IMS, James
  • Simple material IDs to rendering data for use with Iris - James
  • corrupt data read handling - James
  • JarUtil/SelfUpdater error handling - James
  • Buffer count to the F3 menu - James
  • IP only server folder mode - James

Improvements:

  • Improve downsampling / low detail rendering - James
    • IE hollow structures will no longer render incorrectly at lower detail levels
  • Smaller database file sizes - James
    • Added LZMA as the new default compression option
      • LZMA provides roughly 3x the compression vs the previous compressor
    • Add lossy world compression, defaults to "visually equal"
  • Massively reduce memory use and reduce GC pressure - James
  • Speed up world gen queue initial loading - James
  • Vertical LOD rendering improvements - Builderb0y
  • RenderDataTransformer improvements - Cola
  • Glass/transparent block improved color rendering - Cola, IMS

Changes:

  • Overhaul data structure and file handling - James
    • Fixes holes with world gen - James
    • Overhaul the database format - James
    • Add automatic DB migration - James
      • Migration progress can be seen in the log and f3 menu
    • Removed DhRenderData - James
  • Change overdraw to a number input - James
  • Improve transparent rendering (IE Glass) - IMS, Cola
  • rename "Horizontal Quality" -> "LOD Dropoff Distance" - James
  • Refactored logos into assets/distanthorizons - coolGi
  • Change the SQLite journal mode DELETE -> WAL - James
  • Improve initalization logic - s809
  • Improve StepFeatures logging - James
  • Add data source pooling to reduce GC pressure - James
  • Mark Iris 1.6.0 and older as incompatible - James
    • Iris already hid DH rendering anyway, so this just makes it clearer
  • Make leaf colors match fancy graphics - Cola
  • Move most async GL calls to the render thread - James
  • Only log empty biomeWrapper strings once per session - James
  • Remove unnecessary string concatenations in assertions - James
  • Disable cave culling in the end - James
  • Rename unused debug wireframe configs - James

Bug Fixes:

  • Fix holes in the world when using world gen - James

  • Fix world gen re-generating the same terrain - James

  • Fix world gen for extreme render distances - James

  • Fix ocean lighting grid issue - James

  • Fix C2ME support - James

    • Changing C2ME's config should no longer be necessary to run it with DH.
  • Fix SSAO and Fog not applying when Optifine shaders are enabled - James

  • Fix BiomeWrapper warning about null level on startup - James

  • Fix missing indium crashing with a messy error when java.awt is headless - James

    • The error message will now be much clearer and in most cases, should have a pop-up dialog explaining the problem.
  • Fix Z-fighting at very high heights - James

  • Fix red LODs rendering in random places

    • IE Added a config which is disabled by default to render overlapping quad errors - James
  • Fix rendering holes (most of the time) - James

  • Fix F3 menu not removing levels after leaving when multiverse support is active - James

  • Fix LodRenderSections not stopping load futures when closed - James

  • Fix a rare concurrent lighting engine issue with ChunkWrapper.getBlockLightPosList() - James

  • Fix purple Chisels & Bits block rendering - Pierre Remacle

    • IE make Chisels & Bits blocks transparent
  • Fix ThreadPool null pointer before world startup - James

  • Fix world gen lockup if the file system fails - James

  • Fix chunk break/place events not triggering fabric updates post MC 1.17 - James

  • Fix Optifine not running in the dev environment - James

  • Fix light engine out of bounds for MC 1.16 and 1.17 - James

  • Fix File handler repos not closing - James

  • Fix transparent ocean floors at low detail levels - James

  • Fix warning about BiomeWrapper null level on startup - James

  • Fix white grass/water if the biome is null - James

  • Fix optifine 1.16 support - James

  • Fixed mod auto-updating on quilt - coolGi

  • Fix thread pool error logging after shutdown - James

  • Fix corrupt data or moving data between MC versions causing monoliths - James

  • Fix #49 shaders render incorrectly - IMS

    • This is specifically fixed for Iris 1.7.0+
  • Fix #94 Rendering issues with Immersive Portals

  • Fix #414 Added (nearly) unlimited vertical quality graphics option

  • Fix #449 LodNodeBufferBuilder crash due to index out of bounds

  • Fix #595 crash on save and exit - James

  • Fix #597 Show Create logo in DH's update menu

  • Fix #613 multiplayer failing due to folder not existing - James

  • Fix #615 lag when rapidly breaking/placing blocks - James

  • Fix #638 optifine not rendering on 1.16 + 1.17

  • Fix #640 world gen holes not filling in

  • Fix #641 seamless overdraw issues

  • Fix #650 Fix Indium missing messages not displaying correctly in some cases - James

  • Fix #663 Fix world gen holes - James

  • Fix #670 Remove outdated world gen options from tooltip - James

  • Fix #673 Chunks without a position are ignored - James

  • Fix #680 Massive Memory Usage by ColumnRenderSource#renderDataContainer - James

Removals

  • Remove Seamless Overdraw Test - James
    • The experiment was interesting, but ultimately failed. There were a number of issues rendering entities and it only ever worked on Fabric.
  • Near and near/far fog options - James
    • Near fog was originally added back in DH 1.0 in case we couldn't remove vanilla fog, which has since proven to not be an issue.
  • Remove Unlimited horizontal quality (LOD Dropoff Distance) setting - James
    • Unlimited quality is unnecessary and due to how the renderer is currently set up, unable to be run on any machine at higher render distances.
  • Disable cave culling for any detail level above 0 - James
    • Cave culling is currently bugged and to prevent holes in the ocean that show the void this is the temporary solution.

API

Highlights:

  • Due to breaking changes the api version number has been up from 1.0.0 to 2.0.0
    • please make sure your implementing programs check the API version and handle old DH versions cleanly.

Full Details:

Breaking Changes

  • Renamed

    • ERendererMode -> EDhApiRendererMode
    • DhApiChunkOfDataPoints -> DhApiChunk
    • DhApiTerrainDataPoint
      • lightLevel -> blockLightLevel, skyLightLevel
    • DhApiBeforeRenderEvent and DhApiAfterRenderEvent -> EventParam
      • DhApiBeforeRenderEvent.EventParam -> DhApiRenderParam
      • DhApiAfterRenderEvent.EventParam -> DhApiRenderParam
    • Added missing "DhApi" prefix to the following enums:
      • EDhApiQualityPreset
      • EDhApiThreadPreset
      • EDhApiBlocksToAvoid
      • EDhApiDataCompressionMode
      • EDhApiGLErrorHandlingMode
      • EDhApiGlProfileMode
      • EDhApiGpuUploadMethod
      • EDhApiGrassSideRendering
      • EDhApiHorizontalQuality
      • EDhApiLodShading
      • EDhApiLoggerMode
      • EDhApiMaxHorizontalResolution
      • EDhApiServerFolderNameMode
      • EDhApiUpdateBranch
      • EDhApiVanillaOverdraw
      • EDhApiVerticalQuality
      • EDhApiWorldCompressionMode
      • EDhApiDebugRendering
      • EDhApiFogColorMode
      • EDhApiFogDrawMode
      • EDhApiFogFalloff
      • EDhApiHeightFogMixMode
      • EDhApiHeightFogMode
      • EDhApiRendererMode
      • EDhApiRenderPass
      • EDhApiTransparency
      • EDhApiWorldGeneratorReturnType
  • Replaced

    • IDhApiRenderProxy
      • removed getDhFrameBufferId() and setTargetFrameBufferId()
        • replaced with the bindable IDhApiFramebuffer interface
    • IDhApiGraphicsConfig
      • Replaced overdrawPrevention() with overdrawPreventionRadius()
    • Removed DhApiScreenResizeEvent
      • replaced with DhApiColorDepthTextureCreatedEvent

Additions

  • expand API to allow world generator to generate chunks of data points in addition to actual chunks. - Builderb0y

  • usable interfaces

    • IDhApiWrapperFactory
  • bindable interfaces

    • IDhApiFramebuffer
    • IDhApiShaderProgram
    • IDhApiCullingFrustum
    • IDhApiShadowCullingFrustum
  • bindable events

    • DhApiBeforeApplyShaderRenderEvent
    • DhApiBeforeBufferRenderEvent
    • DhApiBeforeDeferredRenderEvent
    • DhApiBeforeRenderCleanupEvent
    • DhApiBeforeRenderPassEvent
    • DhApiBeforeRenderSetupEvent
    • DhApiBeforeTextureClearEvent
    • DhApiColorDepthTextureCreatedEvent
  • methods

    • IDhApiRenderProxy
      • setDeferTransparentRendering()
      • getDeferTransparentRendering()
      • getNearClipPlaneDistanceInBlocks()
    • IOverrideInjector.unbind()
    • DhApi.isDhThread()
    • DhApiConfigValue.clearValue()
    • IDhApiRenderProxy.getDhFrameBufferId()
    • IDhApiWorldGenerator
      • generateChunks()
      • generateApiChunks()
      • EDhApiWorldGeneratorReturnType getReturnType()
    • IDhApiConfigValue
      • getApiValue()
      • clearValue()
  • variables

    • DhApiRenderParam
      • EDhApiRenderPass renderPass
      • float nearClipPlane
      • float farClipPlane
    • DhApi.wrapperFactory

Don't miss a new distant-horizons release

NewReleases is sending notifications on new releases.