Modern, lightweight shaders for Iris

RenderPearl is an incredibly lightweight shader pack using the latest Iris features and optional extensions on various graphics drivers, aiming to deliver pleasant visuals with excellent performance on modern hardware.
If you want to report a bug or give feedback/suggestions, the best way to do so is by opening an issue on the GitHub issue tracker. I rely heavily on user feedback in bug fixing and design.
This project is NOT associated with Mojang's new rendering abstraction layer also named "RenderRearl" (
com.mojang.RenderPearl)
Trivia
This project started as a continuation of "Luracasmus Shaders" (which is why you might have seen it called "LS RenderPearl"), but modern versions share little to no code with the original project. The question remains as to whether the same shader pack remains throughout, when all parts are replaced.
The name "RenderPearl" is inspired by the Bedrock Edition RenderDragon engine.
Features
LabPBR 1.3 compliance & material data
"Yes" indicates support for per-texel data.
| LabPBR 1.3 required component | From resource pack | Configurable nonstandard channels | Included/procedural |
|---|---|---|---|
| Albedo | Yes | No | No |
| Smoothness | Yes, or as linear or perceptual roughness | Yes | Yes |
| f0/reflectance | No | Constant | |
| Normal | Yes | No | Yes |
| LabPBR 1.3 optional component | From resource pack | Included/procedural |
|---|---|---|
| Hardcoded metal | No | No |
| Porosity | No | No |
| Subsurface scattering | No | Constant, only on translucent geometry |
| Emmissiveness | No | Yes |
| Ambient occlusion | Binary, per-block (from model) | Yes |
| Height | No | No |
- Smooth, colored real-time shadows and volumetric light using distorted shadow mapping.
- Colored block light with physically based reflections using a light list combined with vanilla lighting and average texture color.
- Ray traced, per-hand hand light.
- A wide range of highly optimized post-processing effects, including compute shader implementations of FidelityFX Contrast Adaptive Sharpening, SMAA 1x from SMAA-MC, automatic exposure and a variety of tone mapping operators.
- Customizable waves and water opacity.
- Built-in utility features such as light level visualization and a compass overlay.
Mod & Resource Pack Compatibility
Most built-in PBR information, including light colors, material normals and roughness, are almost entirely procedurally generated and should therefore work perfectly with most resource packs and mods.
Integration with Distant Horizons and Voxy is supported on the latest Minecraft version, but experimental and very basic. Complete support is planned for a future update.
Support for mods that modify the Iris shader pipeline, such as Chunks Fade In, is experimental and may have issues, such as the shader pack failing to compile.
Requirements
If you have a decently modern non-macOS device it probably supports everything you need, but you might have to update your Iris and graphics drivers.
- Iris with support for features:
BLOCK_EMISSION_ATTRIBUTECOMPUTE_SHADERSCUSTOM_IMAGESENTITY_TRANSLUCENTPER_BUFFER_BLENDINGSEPARATE_HARDWARE_SAMPLERSSSBO
- Graphics drivers with support for GLSL 4.60.8+.
- Minecraft of a version that is listed as supported by the RenderPearl release. The latest supported version is usually the most stable.
Driver Support
| OS | Drivers | Support |
|---|---|---|
| Linux | Mesa RadeonSI | Perfect |
| Linux | Nvidia | Very Good |
| Linux | Mesa Zink/RADV | Good |
| Linux | Mesa Zink/Nvidia | Unstable |
| Windows | AMD Adrenalin | Good |
| Windows | Nvidia Game Ready | Very Good |
Only the latest stable versions are tested. All other drivers are untested. Please report any issues that occur.
Tuning & The Compatibility Menu
The default configuration and all values selectable with profiles are intended to work on all systems that meet the shader pack's Requirements, though you may be able to achieve higher performance and quality by changing some of these options. Beware that some values may cause the shader pack to not compile, in which case you simply have to reset the option. These are usually marked with a red ⚠.
Implementation-Limited Options
The usable values and effects of these options depend on your graphics drivers.
-
Light List Capacity is limited by the amount of Local Data Share memory usable per work group on your GPU. Depending on your GPU and graphics drivers, and the features enabled by the 16/8-Bit Types option, you may be able to set this significantly higher than the maximum value selectable with profiles (though there is no reason to do so if the light list isn't being filled completely, usually indicated by lights flickering, as it impacts performance negatively).
-
16/8-Bit Types uses optional OpenGL/GLSL extension-provided half- and/or quarter-sized data types to reduce register, LDS and VRAM usage. Performance impact varies depending on hardware and drivers, as conversion between types has a cost, but operations with smaller types can be significantly faster.
-
Trinary Min/Max performs trinary minimum and maximum operations in singular function calls using the optional
AMD_shader_trinary_minmaxOpenGL/GLSL extension, which may allow generation of more optimal instruction sequences. It's recommended to use this whenever possible. -
32×16-Bit Multiplication performs multiplication between 32-bit integers and integers in the 16-bit-representable range using special functions provided by the optional
INTEL_shader_integer_functionsOpenGL/GLSL extension, that may be faster than regular 32-bit multiplication operators. It's recommended to use this whenever possible. -
Immutable Constants marks all shader variables that can be immutable as constant, possibly enabling better optimizations. This feature is required by the GLSL specification, but still unsupported on some graphics drivers. It's recommended to use it whenever possible.
Design & Modding RenderPearl
RenderPearl's source code is intended to be modifiable and re-usable. It's written according to best practice to the best of my ability, but prioritizing performance over readability. If you have any questions about how it works, feel free to contact me on any platform.
Technical information can be found in the GitHub repository.
These are the only RenderPearl project pages made by me:
If you want to distribute RenderPearl, or just spread the word of it, I would greatly appreciate if you would link to at least one of them, Modrinth being the most important one.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
|
R
v2.7.2
|
2d ago | 1 | |||
|
R
v2.7.1
|
2d ago | 1 | |||
|
R
v2.7.0
|
2d ago | 1 | |||
|
R
v2.6.1
|
2d ago | 1 | |||
|
R
v2.6.0
|
2d ago | 1 | |||
|
R
v2.5.1
|
2d ago | 1 | |||
|
R
v2.5.0
|
2d ago | 1 | |||
|
R
v2.4.0
|
2d ago | 1 | |||
|
R
v2.3.0
|
2d ago | 1 | |||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
|
R
v2.2.0
|
2d ago | 1 | |||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
|
R
v2.1.2
|
2d ago | 1 | |||
|
R
v2.1.1
|
2d ago | 1 | |||
|
R
v2.1
|
2d ago | 1 | |||
|
R
v2.0
|
2d ago | 1 | |||
|
R
v1.10
|
2d ago | 1 | |||
|
R
v1.9
|
2d ago | 1 | |||
|
R
v1.8
|
2d ago | 1 | |||
|
R
v1.7
|
2d ago | 1 | |||
|
R
v1.6
|
2d ago | 1 | |||
|
R
v1.5
|
2d ago | 1 | |||
|
R
v1.4
|
2d ago | 1 | |||
|
R
v1.3
|
2d ago | 1 | |||
|
R
v1.2.1
|
2d ago | 1 | |||
|
R
v1.2
|
2d ago | 1 | |||
|
R
v1.1
|
2d ago | 1 | |||
|
R
v1.0
|
2d ago | 1 |
- The default SMAA Contrast Threshold is now higher, and quality options selected by profiles faster than Netherite are now lower.
## Fixed Issues
- The wrong shader is used in one of the post-processing passes in The End, causing incorrect SMAA, CAS and color space conversion.
- (Iris bug worked around) Vanilla light level is incorrect in Minecraft 26.1+, causing underflow in dark areas.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.8.0-beta.4)
- Colorwheel (1.2.9+ only) integration is now available (closes [#14](https://github.com/Luracasmus/renderpearl/issues/14)).
- The target brightness of Automatic Exposure is now configurable.
- The default has been lowered from 0.5 to 0.3.
## Improvements
- The BRDF is now slightly faster when 16-bit float support is missing.
## Fixed Issues
- Vertex alpha overflows to almost zero due to rounding when using 16-bit floats, causing invisible geometry.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.8.0-beta.3)
- Direct sunlight can now be disabled in The Overworld by changing the Shadow Distance option to Off.
## Improvements
- Light list creation now uses frustum culling to avoid collecting lights that are too far outside the player's view, improving performance in most cases and reducing the risk of the list list becoming full.
- Light list creation and de-duplication + sorting now happen during separate frames and require one less memory barrier, for hopefully higher and more stable performance.
- f0/reflectance is now handled more realistically in BRDF reflections on water and some metal blocks. Preparations have also been made for using f0 information from LabPBR textures.
- Some workarounds for incorrect ordering between translucent geometry rendering and the deferred lighting pass have been disabled in Minecraft 26.1+, where they are no longer required, improving performance.
## Other Changes
- Intensity of different light sources is now more physically based. Automatic exposure has been modified to work better with these new values, but some things may still look strange. Please report any significant issues.
- Direct sunlight has been disabled in The End.
## Fixed Issues
- Voxy render distance is handled as 1/16 its actual size.
- Opaque Voxy geometry is rendered incorrectly (reported in the shaderLABS Discord server by anas_6230).
- (Iris 1.10.7 bug worked around) Opaque block entities are rendered incorrectly.
## Possibly Fixed Issues
- The block breaking overlay is rendered incorrectly ([#24](https://github.com/Luracasmus/renderpearl/issues/24), [#30](https://github.com/Luracasmus/renderpearl/issues/30), comment in [#27](https://github.com/Luracasmus/renderpearl/issues/27)).
- (Driver bug worked around) The shader pack fails to compile on some AMD graphics drivers for Windows ([#17](https://github.com/Luracasmus/renderpearl/issues/17), [#31](https://github.com/Luracasmus/renderpearl/issues/31), reported in the shaderLABS Discord server by mine18, and on CurseForge by Jaxxy_).
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.8.0-beta.2)
- Experimental compatibility with Minecraft 1.21-1.21.9 has been implemented. **RenderPearl is still most stable on the latest supported Minecraft version, and may have bugs or missing features in older versions.** Please report any issues that occur.
- Experimental Distant Horizons and Voxy integration is now available (works towards [#11](https://github.com/Luracasmus/renderpearl/issues/11)). **This is very basic and only tested with the latest releases.** Distant Horizons support is more complete than support for Voxy, which currently has major visual issues.
- RenderPearl now includes a description for the Iris/Oculus Shader Folder mod.
## Fixed Issues
- An optimization using subgroup operations is unnecessarily disabled when forward rendered light list lighting is unsupported.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.8.0-beta.1)
- Alpha tint and chunk fade are now applied to translucent geometry.
- The fragment shader for translucent lit geometry has been completely rewritten, and now implements ray traced hand light. Per-pixel light list-based block light is also available with graphics drivers that support subgroup operations and
subgroupBroadcastwith a non-constant index (most common drivers except AMD's for Windows). - The vertex shader implementation of light list-based block light has been removed.
- The option to apply a directional multiplier to ambient occlusion has now been added and is enabled by default (works towards [#8](https://github.com/Luracasmus/renderpearl/issues/8)).
- A sun path rotation of zero is now allowed (works towards [#12](https://github.com/Luracasmus/renderpearl/issues/12)).
- The sizes of celestial bodies can now be configured (works towards [#12](https://github.com/Luracasmus/renderpearl/issues/12)).
- End flashes now affect lighting in the end.
- Shadow distortion is now configurable and tuned better in the different profiles.
## Improvements
- Opaque and translucent lit geometry now share the same rewritten vertex shader and vertex data format for much reduced code duplication.
- Light list colors are now manually packed using atomics when 16-bit integers are disabled, halving memory usage.
- A slightly faster version of the GGX specular D term is now used when 16-bit floats are disabled.
- Lighting-related functions are now shared between shaders for forward and deferred rendering, reducing code duplication.
- Emissiveness is now handled slightly better. LabPBR support is still not implemented but planned for a future release.
- The shadow bias has been improved, reducing various artifacts such as light leaks.
## Other Changes
- The maximum effect of the Ambient Occlusion option has been increased.
- The falloff of light list-based block light has been slightly modified.
## Fixed Issues
- Extensions may be enabled after actual code.
- Translucent geometry is lit incorrectly when rendered before the deferred lighting pass (Closes [#15](https://github.com/Luracasmus/renderpearl/issues/15), Closes [#18](https://github.com/Luracasmus/renderpearl/issues/18), Closes [#19](https://github.com/Luracasmus/renderpearl/issues/19)).
- This was caused by some changes in vanilla Minecraft breaking an Iris feature that RenderPearl relied on.
- Blending and render targets are sometimes configured incorrectly.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.8.0-beta.0)
- The shader pack fails to compile in The Nether and The End ([#16](https://github.com/Luracasmus/renderpearl/issues/16)).
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.7.2)
- A driver bug workaround for the work group size of the global light list de-duplication pass has been disabled on all non-Intel graphics drivers. This could improve performance slightly in some situations.
## Fixed Issues
- The shader pack fails to compile on AMD graphics drivers on Windows (reported by quakingdoom).
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.7.1)
- Hand light now has screen space ray traced shadows.
- A new Hand Light shader pack options screen has been added to control this feature.

## Improvements
- Hand light is now handled separately for each hand.
- Hand light sources are now positioned more closely to actual hand positions.
- Significant improvements have been made that depend on the **Subgroup Operations** Compatibility option.
- Lights are now de-duplicated using subgroup operations before being added to the global light list, significantly reducing the capacity required to avoid overflow and the time spent on global de-duplication.
- Work group bounding box computations are now accelerated using subgroup operations.
- Atomically pushing to buffers is now accelerated using subgroup operations.
- SSBO and shared memory loads are now explicitly made subgroup uniform where possible, using subgroup operations.
- Volumetric light and SMAA neighborhood blending are now significantly faster thanks to optimizations made to work group neighborhood handling.
- Chunks are now culled in uniform control flow.
- Light list creation is now slightly faster when 16-bit integer types are unsupported.
- Sky rendering is now slightly faster, by skipping a work group barrier in tiles with no block lit geometry.
- Gbuffer data is now ordered more optimally following the [RDNA Performance Guide](https://gpuopen.com/learn/rdna-performance-guide/).
## Other Changes
- Amethyst Shards are now emissive.
- Ambient occlusion is now more visible. *More improvements to ambient occlusion are planned.*
- Hand light brightness now matches block light by default.
- Work group sizes have been retuned and optimized for modern AMD Radeon hardware. **This could result in worse performance on some other hardware. Please report any significant issues.**
- Subgroup operations are now assumed by default to be supported on all Radeon hardware.
- Immutable constants are now assumed by default to be supported on all Radeon hardware on Linux.
- A driver bug workaround for the work group size of the global light list de-duplication pass has been disabled on Mesa graphics drivers for Radeon. This could improve performance slightly in some situations.
## Fixed Issues
- Light list sorting fails when multiple lights are at the exact same distance from the player.
- Unlit geometry is rendered with incorrect depth guarantees, causing undefined behavior.
- Fallback functions collide with disabled built-in 16-bit functions on AMD graphics drivers on Windows (driver bug).
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.7.0)
- Enchantment glint overwrites ambient occlusion to complete occlusion, causing very dark surfaces in indirect light.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.6.1)
- Fog now acts significantly more similar to vanilla. This should improve compatibility with mods and data packs that modify its appearance and density.
## Fixed Issues
- Alpha checks are incorrectly skipped on spider eye-like geometry, causing copper golems to appear almost completely black (reported by elmonetina in the shaderLABS Discord server. Likely solves [#5](https://github.com/Luracasmus/renderpearl/issues/5)).
- sRGB colors are treated as linear without conversion on some types of unlit geometry, causing incorrect colors.
- Enchantment glint uses the wrong blend function and overwrites material data, causing enchanted items and armor to appear very bright.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.6.0)
- Light level is scaled incorrectly on non-terrain geometry.
- Block light isn't applied to translucent geometry.
- Indirect skylight falloff follows the wrong curve on translucent geometry.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.5.1)
- Features enabled through a bug fixed in Iris for Minecraft 1.21.9+ are now used, for improved performance with 16/8-Bit Types.
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.5.0)
- The end distance of cloud fog can now be configured
## Other Changes
- The default value of Line Width now matches vanilla
## Fixed Issues
- Clouds are invisible in recent Minecraft/Iris versions (Closes [#7](https://github.com/Luracasmus/renderpearl/issues/7))
- Trinary Min./Max. support is incorrectly assumed to exist on all Intel+Windows graphics drivers (reported by [User6010511G](https://www.planetminecraft.com/member/user6010511g/))
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.4.0)
- Some shader pack option names and descriptions are now more accurate
## Other Changes
- The deferred lighting and sky rendering programs have been merged, and indirect dispatch is no longer used
- This should improve performance in most scenes, but might slightly reduce performance when most of the scene is sky
- The design of the compass is now slightly simpler and faster to render, with completely hard edges
## Fixed Issues
- Indirect dispatch of the deferred lighting program doesn't work properly on some graphics drivers (Closes [#6](https://github.com/Luracasmus/renderpearl/issues/6))
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.3.0)
- Procedural roughness generation now uses a new algorithm
- Procedural normal generation is now significantly faster and only works with whole texels
- This should give a more vanilla-like appearance but also more depth
## Other Changes
- The sky and fog are now brighter
- The brightness multiplier applied to emissive surfaces is now smaller
## Fixed Issues
- Procedural normals are incorrect at borders between mipmap levels
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.3.0-beta.2)
- The Specular Map Roughness option is now boolean instead of a slider.
Onis equivalent to1.0in the previous version
## Fixed Issues
- The shader pack fails to compile when 16-bit floating point shader variables are enabled (reported by dogsill)
## Removed Features
- The Specular Intensity option has been removed
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.3.0-beta.1)
- Basic ambient occlusion material data is now automatically generated
- LabPBR 1.3 ambient occlusion map support is planned too
- Indirect Sky Light and Fallback Block Light options have been added
- A Subgroup Operations compatibility option has been added
## Improvements
- Block light falloff now follows the inverse square law more accurately by compensating for Manhattan distance falloff in the Vanilla lighting, down to some light level (defined by the new Falloff Margin option)
- Indirect sky light brightness now follows direct sky light brightness through the daylight cycle
- Ambient occlusion is now applied to indirect block and sky light
- Extension support assumption is now more accurate, and has been enabled by default for all compatibility options
- Negative Sun Path Rotation values are now allowed
- Fragment shader outputs are now 16-bit when writing to 16-bit targets
## Other Changes
- The shader pack options menu has been completely redesigned
- Chorus flower blocks are now emissive, just like chorus flower items
- RenderPearl now prints a warning when used with Oculus
- Oculus support is not tested and may be incomplete or broken
## Fixed Issues
- Undefined values are read at work group/tile corners in SMAA and Volumetric Light (Closes [#3](https://github.com/Luracasmus/renderpearl/issues/3). Also reported by Timø on Discord)
- Some translucent particles hide what is behind their fully transparent parts
- Enabled alpha checks
- Resource pack normal maps are interpreted incorrectly
- 3D bounding boxes of deferred lighting tiles are computed with incorrect rounding
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.3.0-beta.0)
- Many vertex parameters are now significantly smaller at the cost of packing and unpacking, likely improving performance in most circumstances
- Vertex parameters that are unused in the Nether or when Flat Normals are active are now completely disabled, improving performance
## Fixed Issues
- Entity color isn't being applied
- Emission on held items is always zero
- The shader pack fails to compile when resource pack-provided normal or specular maps are enabled (likely related to a report by [KrazyFF](https://www.planetminecraft.com/member/krazyff/))
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.2.0)
- The shader pack fails to compile on some non-NVIDIA or AMD/ATI graphics drivers (reported by Lolothepro30)
- Completely avoid
gl_MaxComputeWorkGroupSize.xin work group local size declaration on affected drivers
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.2.0-beta.9.1)
## New Features
- [Tony McMapface](https://github.com/h3r2tic/tony-mc-mapface) is now implemented as the default tonemap operator in RenderPearl
- [ACES Fitted](https://docs.rs/bevy_core_pipeline/latest/bevy_core_pipeline/tonemapping/enum.Tonemapping.html#variant.AcesFitted) has also been implemented as an alternative operator
- Swedish localization is now available the entire shader pack
- The 16/8-Bit Buffers Compatibility option has been added
- Shrinks buffers, assuming complete support for all data types added by 16/8-Bit Types. This can save about 25% of the VRAM used by the light index
- This needs to be enabled manually, since Iris doesn't allow shader packs to detect device characteristics when defining buffer sizes
## Improvements
- RenderPearl now implements all standard Iris shader programs
- This fixes almost all issues related to invisible or incorrectly shaded geometry, including rain and snow, beacon beams, debug chunk borders, block selection outlines, fishing lines and leads (reported by [J_rizzlr](https://www.planetminecraft.com/member/j_rizzlr/))
- Now that lines are visible, a new Utility option has been added to control their thickness, with the default value being slightly higher than in vanilla Minecraft
- Cloud opacity now slightly varies over time and space
- The [
CHUNKS_FADE_IN_NO_MOD_INJECT](https://github.com/kerudion/chunksfadein/wiki/Iris-API#chunks_fade_in_no_mod_inject) macro has been added to all programs to prevent Chunks Fade In from injecting and breaking shader code - Full compatibility may be implemented in the future
- More informative messages are now printed in the Minecraft log when RenderPearl is used in configurations that may cause issues
## Other Changes
- Changed default FFX CAS Sharpness value: 0.5 -> 0.3
## Fixed Issues
- The shader pack (still) fails to compile on some Intel drivers (reported by [DragonSlayerGdk](https://www.planetminecraft.com/member/dragonslayergdk/), [\_Squirrels\_](https://www.planetminecraft.com/member/_squirrels_/), [User5697183G](https://www.planetminecraft.com/member/user5697183g/) and [user_bqkkp348c9zol9o6](https://www.curseforge.com/members/user_bqkkp348c9zol9o6/projects))
- An attempted fix for this issue was included in v2.2.0-beta.7, which applied a workaround on Intel graphics drivers (based on the
MC_GL_VENDOR_INTELmacro) - This version applies a better version of the workaround on all Intel GPUs, not just ones with Intel graphics drivers (based on the
MC_GL_RENDERER_INTELmacro) - Ambient light isn't applied to solid non-terrain geometry (reported by [MClegend4251](https://www.planetminecraft.com/member/mclegend4251/))
- Indexed Block Lights move with view bobbing
- Indexed Block Lights' emission values are encoded as half their real value, causing dark and incorrect lighting
- OpenGL/GLSL implementations not supporting signed
float16_tandfloatzero breaks encoding of emission and hand flag in sign bits, causing visual issues
## Removed Features
- Removed all previously available tonemap operators other than Uchimura, SBDT (SomewhatBoringDisplayTransform) and Saturate/Clamp
[GitHub Release](https://github.com/Luracasmus/renderpearl/releases/tag/v2.2.0-beta.9)
- (Attempted fix) The shadow map isn't rendered properly on some AMD drivers (reported by [Detrovv](https://www.planetminecraft.com/member/detrovv/))
- Switched from FidelityFX RCAS to [CAS](https://gpuopen.com/fidelityfx-cas/) 1.2
- This should improve the quality of sharpening
- Significantly reduced code duplication
## Removed Features
- Removed the ARB Subgroup Ballot Compatibility option
## Fixed Issues
- (Attempted fix) The shader pack fails to compile on some AMD graphics drivers (reported by [NovaLynxie](https://www.planetminecraft.com/member/novalynxie/) and [Detrovv](https://www.planetminecraft.com/member/detrovv/))
Update en_US.lang
- Volumetric Light is back!
- The new algorithm utilizes the low discrepancy of [Interleaved Gradient Noise](https://blog.demofox.org/2022/01/01/interleaved-gradient-noise-a-different-kind-of-low-discrepancy-sequence/) to account for wide depth ranges using very few samples by sharing and interpolating values between pixels in 9x9 neighborhoods
- Hand Light is back!
- and colored, and much more realistic! It's now also completely separate from the Indexed Block Light system
- Texture normals can now be set to completely flat (requested by [Warlord Wossman](https://www.planetminecraft.com/member/warlord_wossman/))
- A Screenshot profile has been added
- This configures some options to values normally not accessible that may severely impact performance. It's only recommended for actually taking screenshots
- A new ARB Subgroup Ballot Compatibility option has been added
- When enabled, this enables some operations that allow data to be processed accross entire subgroups instead of for every invocation, possibly improving performance
## Improvements
- Tuned shadow clipping planes to be as close as possible
- This caps Sun Path Rotation at 25°
- Improved RP Normal Maps support by reconstructing the
zcomponent instead of relying on it being provided by textures - Made BRDF and roughness-related calculations more physically accurate
- Significantly improved order and scheduling of various operations
- This reduces the amount of global memory barriers issued every frame, and might reduce memory traffic
- Allowed 8-bit integers to fall back to 16-bit when unsupported, if possible
- In previous versions, 8-bit integers would fall back to 32-bit immediately
- Refined extension assumption logic based on extension support trends
- Please let me know if the shader pack doesn't work or you're experiencing issues after this update**
## Other Changes
- Waves are now disabled by default
- Indexed Block Light is now permanently enabled, to reduce complexity
- Water now has reduced roughness when auto-generated roughness values are used
## Fixed Issues
- sRGB-space and linear colors are sometimes used together without conversion, causing incorrect results
- Waves on lava are broken
- Waves appear to have very low precision
- Indexed Block Light uses incorrect depth values for the hand and held items
- The shader pack fails to compile on some Intel graphics drivers when Indexed Block Light is enabled (reported by [sniffercraft34](https://www.planetminecraft.com/member/sniffercraft34/), [lynlyn1814](https://www.planetminecraft.com/member/lynlyn1814/) and [BLVCKxSVND](https://www.planetminecraft.com/member/blvckxsvnd/))
- A workaround is now applied when the
MC_GL_VENDOR_INTELmacro is defined by Iris, which may very slightly reduce performance
- Optimized memory layout of the Light Index [SSBO](https://www.khronos.org/opengl/wiki/Shader_Storage_Buffer_Object), saving at least
12bytes - Removed unneccessary calculations on shadow geometry and enabled automatic level of detail
- This slightly changes how shadows look, likely reducing noise in some situations while possibly sacrificing detail
## Fixed Issues
- 16/8-Bit Types cause compile failures on AMD drivers
- Disabled 16-bit matrix support
- The screen sometimes turns completely black when DCG is enabled
- Added additional protections against [NaNs](https://www.wikiwand.com/en/articles/NaN) and negative values
## Other Changes
- Disabled Entity Shadows in all profiles lower than High
## Temporarily Disabled Features
- Volumetric Light
- Hand Light
- More small optimizations have been made to Light Index sampling making use of the new **16/8-Bit Types**
- (From [SMAA-MC v1.1.1](https://modrinth.com/shader/smaa-mc/version/1.1.1)) Rounding is now ensured to be consistent across OpenGL implementations
- This was missed while porting SMAA from HLSL to GLSL, since the HLSL
roundalways rounds midpoints towards even integers while the GLSLroundhas implementation-dependant behavior. GLSLroundEvenis now used instead in the SMAA implementation
## Fixed Issues
- Shaders fail to compile on AMD graphics drivers while using Gaussian shadow blur (reported by [Mine18](https://www.planetminecraft.com/member/mine18/))
# Temporarily Disabled Features
- Volumetric Light
- Hand Light
## Improvements
- Major lighting improvements have been made
- Different types of light are now mixed in a more realistic manner
- Indexed block light now uses proper [BRDF](https://www.wikiwand.com/en/articles/Bidirectional_reflectance_distribution_function) lighting calculations on solid geometry, and an [inverse-square law](https://www.wikiwand.com/en/articles/Inverse-square_law)-based falloff

- The Level Of Detail system now uses hashed world-space position modulo LOD, instead of vertex ID modulo LOD level
- This means light sources will be more evenly distributed, and also allows for a LOD of zero close to the player, meaning no lights (except lava) should ever be invisible close up
- Global index deduplication now takes full advantage of maximum supported work group size
- Local index culling now uses player-eye-space [Manhattan distance](https://www.wikiwand.com/en/articles/Taxicab_geometry) and view-space [Euclidean distance](https://www.wikiwand.com/en/articles/Euclidean_distance) instead of [Chebyshev distance](https://www.wikiwand.com/en/articles/Chebyshev_distance), for even more aggressive culling
- Index Distance is now a cube instead of a sphere
- This fully utilizes all representable positions in light index storage
- [SMAA](https://www.iryoku.com/smaa/) (Enhanced Subpixel Morphological Antialiasing) 1x is now fully implemented, based on [SMAA-MC](https://modrinth.com/shader/smaa-mc)
- This is always enabled by default, replacing the old [FXAA](https://www.wikiwand.com/en/articles/Fast_approximate_anti-aliasing) implementation
- Faster code paths making use of various optional GLSL extensions have been added
- 16/8-Bit Types
- 32×16-Bit Multiplication
- Trinary Min/Max
- These can be controlled in the Compatibility shader options menu
- Please let me know if the shader pack fails to compile with the default values**
## New Features
- New Dynamic Color Grading options have been added
- Peak Sensitivity
- Samples
## Removed Features
- Bloom has been removed
- A better implementation might return in the future
## Fixed Issues
- RP Specular Maps cause compile failures
- DCG doesn't detect color values above 1.0, and thus never lowers exposure
## Other Changes
- Fog is now a cylinder, increasing visibility and matching Vanilla
- Clouds now also use a square fog to be visible further away
- Light Level Visualization now disables Indexed Block Light
## Temporarily Disabled Features
- Volumetric Light
- Hand Light
Screenshots taken on [le_ultimate_rtx14](https://discord.com/channels/237199950235041794/285346939833155584/881393569791877170), made by [shortnamesalex](https://github.com/shortnamesalex) (you need to [be in the shaderLABS Discord server](https://discord.gg/RpzWN9S) to follow the link)
## Improvements
- Light index culling has been improved further
- Partially fixes lights disappearing behind the camera. This can't be fully avoided without sacrificing performance, due to CPU-side culling
- Per-tile culling now uses a combination of player and view space bounding boxes for more aggressive culling, improving performance
- The quality of clouds has been improved
- Some calculations are now more accurate
- Varyings are now fewer and don't get interpolated when not neccesary, improving performance slightly
## Fixed Issues
- Auto-generated normals cause compile failures on AMD drivers (reported by power, [XRTerra](https://www.planetminecraft.com/member/xrterra/), [R3li](https://www.planetminecraft.com/member/r3li/) and [_ecliptix](https://www.planetminecraft.com/member/_ecliptix/))
- The fix for this actually isn't tested, since I don't have an AMD GPU. Please report any issues that remain
- Sky color sRGB -> linear color conversion is slightly off
- Block breaking animations are invisible
- This is the same issue causing some other things to be invisible, which will be fixed in later updates
- Bloom & Compass fail to compile
## New Features
- Implicit normals and normal map support 🎉
- Implicit normals currently cause compile failures on some AMD GPUs! Please enable RP Normal Maps if the shaders fail to load**
Using [Meteor](https://www.planetminecraft.com/texture-pack/lmx/)

Using purely auto-generated normals and smoothness

## Improvements
- Further major improvements to index-based lighting
- Lights are now de-duplicated based on position, concurrently with shadows, volumetric light and sky rendering
- Lighting Level Of Detail is now based on range, significantly improving performance with almost no visible effect on quality
- Added LOD Falloff and Lava LOD Bias options
- The light index is no longer recreated every frame
- The rate at which this happens is now controlled by the new Index Rate option
- Tiles/work groups now only allocate memory for part of the global index, which works well because of highly effective culling
- The ratio between global and local index size is controlled by the new LDS Ratio option

- The shader pack options screen has been completely redesigned

- Dynamic Color Grading has been rewritten entirely
- The implementation is now multi-threaded and uses significantly more samples to gather accurate color data from the screen
- Implicit smoothness calculations are now relative to average surface brightness
- This should make smoothness more consistent between materials
- The FXAA implementation has been improved
- Fixed blending in the wrong color space
- More uniforms are now combined
- Precision of color and data buffers has been increased by using better packing
## Fixed Issues
- Block light is incorrect on translucent geometry
- Indexed light sources sometimes flicker (reported by [Farmer_Markus](https://www.planetminecraft.com/member/farmer_markus/))
- Lava & water fog color is incorrect
- Shadow mapping is enabled in the nether
- Opaque hand and handheld items render at the wrong depth
- Volumetric Light is inaccurate and causes light leaks
- Iris 1.8+
- Iris 1.8 removed support for negative block IDs, which were previously used by RenderPearl
- The update also added [additional shadow programs](https://github.com/IrisShaders/Iris/issues/2441) and [the ability to disable sky and star rendering](https://github.com/IrisShaders/Iris/issues/2470), which are now used by RenderPearl to improve performance
- Light index-based lighting now enabled by default!
- Due to significant improvements to the structure of the shader pack as well as the lighting calculations and culling, both Colored Light and Glossy Reflections are now enabled by default
- Implicit surface smoothness & improved specular map support
- When specular maps are disabled, smoothness values are automatically generated based on surface luminocity. More customization of this feature will be available in the future
- Completely custom sky rendering
- Significantly faster than the Vanilla Minecraft sky
- Still slightly unstable and **may not look right all the time**, which is part of why this release is marked as a beta
- Hand Light option
## Improvements
- Compute-based post-processing and deferred rendering
- This significantly improves performance in many situations due to less unneccessary processing, fast shared memory and asynchronous processing
- Translucent terrain is still forward rendered using a technique similar to that in RenderPearl v2.1, though this is subject to change
- Fog can now be disabled (requested by Baldous_)
## Fixed Issues
- Enchantment glint is broken in the nether (reported by Stonease)
- Light Level Visualization is incompatible with some drivers (reported by Paragoumba)
## Fixed Issues
- Applied [textureMatrix](https://shaders.properties/reference/uniforms/matrices/texturematrix/) in all gbuffers-style programs to improve future and mod compatibility