# Angelica **[CurseForge](https://www.curseforge.com/minecraft/mc-mods/angelica) | [Modrinth](https://modrinth.com/mod/angelica)** * The little Angle [sic] that supports shaders while saving your fps from a certain death -boubou * Is it obtuse, or accute? -Caedis * It's a cute angle -mitchej123 * It's the angel that pulls you out of OptiFine's hell -Roadhog360 ## What's in it * Shaders - Iris backport & enhancements * Terrain - Celeritas 2.5.12 with threaded chunk building and translucency sorting * GL 3.3 core profile with Java based fixed function pipeline emulation * Renderer selection - OpenGL, or SDL GPU for Vulkan/Metal/Direct3D 12 * Batching and instancing for entities, tile entities, items, particles and weather * Dynamic lights * HUD caching * Custom fonts and text effects * MCPatcher - connected textures, custom item textures, custom colors, random mobs, better skies * Bundled NotFine, zoom, FPS reducer ## Status * OpenGL + Celeritas terrain - Default * Shaders - Generally Available * Complementary + Euphoria Patches is the primary compatibility target * Sildurs, Seus, and any other shaders might work * SDL GPU renderer - Experimental * MCPatcher features - Alpha * HUD caching - Semi-stable ## SDL GPU renderer Optional, OpenGL is the default * Vulkan, Metal (macOS) and Direct3D 12 (Windows) through SDL3 * Needs [LWJGL3ify](https://github.com/GTNewHorizons/lwjgl3ify/releases/) 3.0.25+ * Falls back to OpenGL when no device can be created * Vulkan on macOS via MoltenVK from the optional `angelica-moltenvk` jar ## Core Profile Targets GL 3.3+ core profile * FFP emulation via generated GLSL shaders * Display list emulation * Software matrix stacks and state management through GLSM * GL_QUADS -> GL_TRIANGLES conversion * Automatic transformation of mod shaders that use compat-only GLSL builtins (`gl_ModelViewMatrix`, `texture2D`, etc.) # Required Dependencies * [UniMixins](https://github.com/LegacyModdingMC/UniMixins/releases) >= 0.1.23 * [GTNHLib](https://github.com/GTNewHorizons/GTNHLib/releases) >= 0.11.19 * NOTE: Some mods are not required, but a specific version is required if present - see: `Minimum versions` below. # Minimum versions (if present) * [LWJGL3ify](https://github.com/GTNewHorizons/lwjgl3ify/releases/) 1.5.3+ (3.0.25+ for the SDL GPU renderer) * [Hodgepodge](https://github.com/GTNewHorizons/Hodgepodge/releases) 2.4.4+ * [ArchaicFix](https://www.curseforge.com/minecraft/mc-mods/archaicfix/files/all?page=1&pageSize=20) 0.7.0+ * [CodeChickenCore](https://github.com/GTNewHorizons/CodeChickenCore/releases) 1.2.0+ - Threading issues below that * [Amazing Trophies](https://github.com/GTNewHorizons/Amazing-Trophies/releases) 1.2.2+ # Known (temporary) Incompatibilities * Forge Relocation - Currently non Thread Safe; safe if not in use * ProjectRed Frames - Currently non Thread Safe; safe if not in use # Potential Incompatibilities * EndlessIDs - Compat commits have been made, might work, might not - not fully tested # Known Incompatibilities * FalseTweaks - Not currently planned (Looking for volunteers) [Might work if you effectively disable most of the mod] * RPLE - Not currently planned (Looking for volunteers) * LiteLoader - Install [LiteloaderLoader](https://github.com/Midnight145/LiteloaderLoader) # Permanent Incompatibilities * OptiFine [Disabled, won't fix] * FastCraft [Disabled, won't fix] * BetterFPS [Disabled, won't fix] * OptimizationsAndTweaks [Disabled, won't fix] * Neodymium - Untested, but unlikely to be compatible. (Chunk Meshing is definitely incompatible, other features might work depending on config) * SmoothFont - Equivalent functionality added * ClientFixer - Use a resource pack like [GTNH-FTI-Standard-Font](https://github.com/Eldrinn-Elantey/GTNH-FTI-Standard-Font) # Building * `./gradlew build`, `./gradlew test` * Subprojects: `glsm` (state manager, FFP emulation, backends), `lwjgl3-backend`, `sdl-gpu`, `tracy-client`, `moltenvk` * Read the [AI policy](AI_POLICY.md) before opening a PR # Credits * ShadersMod * Original ShadersMods: karyonix, sonic ether, id_miner, daxnitro * eigenraven, Caedis, glowredman, and mitchej123 for the conversion of ASM to Mixin * eigenraven and vlaetansky for getting the original ShadersMod compiling again * ArchaicFix * Includes graphic enhancements from [ArchaicFix](https://github.com/embeddedt/ArchaicFix/tree/4afb943751883b27a1f0aa7c5ba71698bc897e95) by embeddedt under the [LGPL](https://github.com/embeddedt/ArchaicFix/blob/main/LICENSE.md) * NotFine * Includes modified version of [NotFine](https://github.com/jss2a98aj/NotFine/tree/a2652e24b5654f437fb7138f6d1f5e947a7d7125) by jss2a98aj under the LGPL * Iris Shaders * The [Iris](https://github.com/IrisShaders/Iris) Team: coderbot, IMS212, Justsnoopy30, FoundationGames * Asek3 for the Iris Forge port [Oculus](https://github.com/Asek3/Oculus/tree/839ce8eca8cf0c4f6b7a1322b906e5c99125ca69) * Backported code under the LGPL * Sodium / Celeritas * JellySquid & the CaffeineMC team, for making Sodium in the first place * Embeddedt for Celeritas used under the LGPL 3.0 * Reese's Sodium Options * FlashyReese for [Reese's Sodium Options](https://github.com/FlashyReese/reeses-sodium-options/tree/aa4ea67047cf53e54976e93c6bb1ab5ba16b142b) under the [MIT license](https://github.com/FlashyReese/reeses-sodium-options/blob/aa4ea67047cf53e54976e93c6bb1ab5ba16b142b/LICENSE.txt) * Neodymium * Makamys for [Neodymium](https://github.com/makamys/Neodymium) - Various Tessellator -> Quad functionality taken under the LGPL 3 * MCPatcherForge * Original [MCPatcher](https://bitbucket.org/prupe/mcpatcher/src/master/): Paul Rupe * [Forge version](https://github.com/mist475/MCPatcherForge): Mist475 under LGPL 3.0 with default ctm textures for glass and bookshelves by DarkBum under CC-BY-SA * HUDCaching * Created by [Moulberry](https://github.com/Moulberry/MCHUDCaching), backported from [Patcher](https://github.com/Sk1erLLC/Patcher) mod by Alexdoru under the CC-BY-SA-NC 4.0 license * Angelica * mitchej123, Omni, Makamys, Embeddedt, NanoLive, Caedis, Cardinalstar, Alexdoru, Eigenraven, mist475, Clepto, kurrycat for helping get Angelica up and running! * IMS, jss2a98aj, || dbp ||, roadhog360 for advice and moral support * Forge 1.12+ * Some files have been taken from Minecraft Forge under the LGPL 2.1 license and are marked as such * FRAPI and Indigo * Model building API heavily inspired by/copied from Fabric's; upstream may use it under the original Apache 2.0 license, see LICENSE in `com.gtnewhorizons.angelica.models` * Dynamic Lights * LambdAurora for [LambDynamicLights](https://github.com/LambdAurora/LambDynamicLights) under the MIT license, and the Forge port anthxnymc for [DynamicLightsReforged](https://github.com/anthxnymc/DynamicLightsReforged), also under the MIT license * Embeddedt and Ferri_Arnus for [glsl-transformation-lib](https://github.com/TauMC/glsl-transformation-lib) * Also for work on [Monocle](https://github.com/ferriarnus/Monocle) which was used as a reference for implementing glsl-transformation-lib * Code from both glsl-transformation-lib and Monocle taken under their respective LGPL 3.0 licenses * FalseTweaks * FalsePattern for [FalseTweaks](https://github.com/falsepattern/falsetweaks) - Item Rendering Optimizations taken from FalseTweaks under the LGPL 3.0 license * Beddium * Venn and Falsepattern for [Beddium](https://github.com/vfx-dev/Beddium) - MinimapRenderer, SafeChunkTracker, and some debug commands adapted under the LGPL 3.0 License * [Mesa](https://gitlab.freedesktop.org/mesa/mesa) - Code ported and/or inspired from Mesa - under the MIT license * Display list ID allocator ported from [util_idalloc](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/util/u_idalloc.c) (Copyright 2017 Valve Corporation) * FFP vertex shader generation inspired by ffvertex_prog.c (Copyright 2007 VMware, Inc.) * FFP fragment shader generation inspired by ff_fragment_shader.c (Copyright 2007, 2009 VMware, Inc. / 2010-2011 Intel Corporation) * Fog parameter optimization inspired by st_nir_lower_fog.c (Copyright 2023 Google LLC) and prog_statevars.c (Copyright 1999-2007 Brian Paul) * RGSS Terrain Texture Filtering * Indiesoft for [defold-sharp-sprite](https://github.com/indiesoftby/defold-sharp-sprite), used as the reference implementation under the MIT license