minecraft.wiki-mirror/wiki_backup/shader.txt
2024-12-24 06:17:34 -05:00

600 lines
28 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{About|the in-game shaders|the shaders provided by the modification|Mod#Shader packs}}
{{For|in-game shaders before [[Java Edition 1.9]]|Shader/Before 1.9}}
{{wip}}
'''Shaders''' are used to define the game's rendering of certain elements.
== Java Edition ==
Two distinct kinds of shaders exist: '''core shaders''' and '''post-processing shaders'''.
'''Core shaders''' are used to render fundamental parts of the game such as entities and terrain.
'''Post-processing shaders''' are used to apply slightly more complex visual effects to the screen.
* The menu background blur
* [[Spectator#Mob view|Certain mob vision types]] as seen in the [[Spectator]] gamemode
* The ''Fabulous!'' [[graphics setting]]'s fixed handling of translucent objects
* The [[Glowing]] status effect
* Previously the [[Super Secret Settings]], although these were removed from the assets in 1.20.5
Shaders are written in the OpenGL Shading Language (GLSL). Each single render program comes in two parts, "vertex" and "fragment"; vertex shaders modify the positions of individual vertices, whereas fragment shaders are applied to every pixel. For example, vertex shaders are often used to create waving foliage and water, and fragment shaders can be used to add effects like bloom, god rays, and blur. In Minecraft, vertex shaders must use the extension ".vsh", and fragment shaders, likewise, ".fsh"
Shaders programs and [[#Shader program configuration|configurations]] are stored in the <code>assets/minecraft/shaders/</code> directory of [[minecraft.jar]], and can be replaced with a [[resource pack]]. Note that if any error occurs when loading the shaders, the resource pack is disabled and fabulous graphics mode is turned off.
=== Core shaders ===
Core shaders are used to render almost everything in the game, including terrain, entities, gui elements, etc.
Each core shader is a [[#Shader program configuration|shader program configuration]] file, which defines what vertex and fragment shaders to use and what uniforms are available to the shaders.
Core shaders are located in the <code>assets/<namespace>/shaders/core</code> directory of a resourcepack.
==== List of core shaders ====
A list of all core shaders can be found by expanding the header below, listing descriptions of what each shader is responsible for, with images highlighting each element in red:
{{missing information | What each shader is used for in current minecraft versions}}
{{long section}}
==== Non-rendertype ====
{| class="wikitable" data-description="Non-rendertype shaders"
! Name
! Used for
! Sample Images
|-
|blit_screen
|Blit copies one buffer to another, however this cannot be overridden in a resource pack.
|
|-
|particle
|All particles.
|
|-
|position
|
*Top sky and stars in the overworld
*Dark fog when the player is in the void
*The highlight color when selecting a world.
|[[File:Core shader position highlight.png|475px]]
|-
|position_color
|Used for solid color-block, including:
*Sunrise and Sunset
*Chunk border
*Sleep overlay
|
|-
|position_color_lightmap
|Unknown.
|
|-
|position_color_normal
|Unknown; does not seem to be referenced anywhere in code.
|
|-
|position_color_tex
|
*Suffocation overlay screen effect
*On fire overlay
|[[File:Core shader position color tex highlight 2.png|474x474px]]
|-
|position_color_tex_lightmap
|Unknown.
|
|-
|position_tex
|Used to render a texture:
*The sun and the moon
*World border
*Underwater screen effect
*Spyglass texture overlay
*Carved pumpkin overlay
*Powder snow freezing overlay
*Portal overlay
*Darkness and world border vignette effects
*Distortion effect overlay for nausea effect when "Distortion Effects" less than 100%
*Hotbar
*Crosshair
*Bossbar overlay
*Health bar, Armor bar, Hunger bar, Oxygen bar, Jump bar, Experience bar
*Effect icons
*Normal GUIs
*Button in GUI
*Game logo and Mojang logo
|
|-
|position_tex_color
|
*Skybox with the {{code|minecraft:the_end}} [[Effect (dimension)|dimension effect]].
*Dirt background of GUIs
*The panorama view in the title screen
|[[File:Core shader position tex color highlight.png|475px]]
|-
|position_tex_color_normal
|Clouds.
|[[File:Core shader position tex color normal highlight.png|475px]]
|-
|position_tex_lightmap_color
|Unknown.
|
|-
|}
==== Rendertype ====
; Blocks
{| class="wikitable"
!Name
!Description
!Sample Image
|-
|rendertype_beacon_beam
|The beam of the beacon and end gateway.
|
|-
|rendertype_crumbling
|The block cracks when mining a block.
|
|-
|rendertype_cutout
|All blocks with partially transparent textures (with the exception of those listed in <code>rendertype_cutout_mipped</code> and <code>rendertype_translucent</code>)
|
|-
|rendertype_cutout_mipped
|Some blocks: grass blocks, iron bars, glass panes, tripwire hooks, hoppers, chains (leaves when using fancy or fabulous graphics)
|
|-
|rendertype_end_gateway
|The inside of an end gateway, reuses the same shader as {{code|rendertype_end_portal}}.
|
|-
|rendertype_end_portal
|The inside of an end portal, as well as the insides of end gateways.
|[[File:Core shader rendertype end portal highlight.png|475x475px]]
|-
|rendertype_solid
|All solid blocks, lava, and when in fast mode, leaves.
|[[File:Core shader rendertype solid highlight.png|475x475px]]
|-
|rendertype_translucent
|Translucent blocks: water (still and flowing), ice, nether portal, stained and tinted glass, slime and honey, bubbles.
|[[File:Core shader rendertype translucent highlight.png|475x475px]]
|-
|rendertype_translucent_moving_block
|Blocks that are translucent and are being moved by a piston. The one below is stained glass.
|[[File:Core shader rendertype translucent moving block hightlight.png|475x475px]]
|-
|rendertype_tripwire
|Tripwire (sections connected to tripwire hooks are instead rendered completely solid<ref>{{bug|MC-214692}}</ref>
|[[File:Core shader rendertype tripwire highlight.png|475x475px]]
|-
|rendertype_water_mask
|Used to mask out water surface inside a boat to to prevent it from appearing flooded.
|
|}
;Entities
{| class="wikitable"
!Name
!Description
!Sample Image
|-
|rendertype_armor_cutout_no_cull
|Armor and armor trims on entities.
|
|-
|rendertype_armor_entity_glint
|Enchantment glint on equipped armor.
|
|-
|rendertype_armor_glint
|Unknown.
|
|-
|rendertype_breeze_wind
|The [[Breeze]]'s wind armor and charges.
|
|-
|rendertype_energy_swirl
|Charged Creeper swirling outline and Wither armor.
|[[File:Core shader rendertype energy swirl highlight.png|276x276px]]
|-
|rendertype_entity_alpha
|[[Ender Dragon]] death disintegration effect.
|
|-
|rendertype_entity_cutout
|Some flat textures and most solid blocks in the inventory, hand, or head slot of an entity.
|
|-
|rendertype_entity_cutout_no_cull
|All entities and guardian beams. Includes shulker boxes both in the world and inventory.
|
|-
|rendertype_entity_cutout_no_cull_z_offset
|Skulls on entities and as an item.
|
|-
|rendertype_entity_decal
|Dying Ender Dragon.
|
|-
|rendertype_entity_glint
|Unknown.
|
|-
|rendertype_entity_glint_direct
|Enchantment glint on trident model.
|
|-
|rendertype_entity_no_outline
|Banner patterns (banners and shields).
|
|-
|rendertype_entity_shadow
|The ''blocks that are affected by an entity's shadow'', but not the shadow itself.
|[[File:Core shader rendertype entity shadow highlight.png|250x250px]]
|-
|rendertype_entity_smooth_cutout
|End crystal beams.
|[[File:Core shader rendertype entity smooth cutout highlight.png|250x250px]]
|-
|rendertype_entity_solid
|Certain entities or entity-style objects: banners, shulker heads, books on lecterns/enchantment tables, shields, beds, bell part of bells, capes, shells of conduits, paintings, tridents, the ears on the Deadmau5 skin.
With item frames, the item frame entity itself is part of the shader, however items on it are not. Only non-filled in parts of maps placed on an item frame where the underlying frame is exposed are part of the shader.
Also includes the first person bottom skin layer.
|
|-
|rendertype_entity_translucent
|Translucent entities and parts of entities: slimes, players (all layers) along with player heads with custom skins on them, markings on horses, shulker bullets, piglins, zombified piglins, elder guardian particle effect.
|
|-
|rendertype_entity_translucent_cull
|
*Flat texture items (in world and inventory).
*Translucent blocks in the inventory.
*Totem of Undying use animation.
|
|-
|rendertype_entity_translucent_emissive
|Glowing parts of Warden texture.
|
|-
|rendertype_eyes
|A shader for the ''entire body'' of an entity that has glowing eyes (not the eyes themselves). This is not fully opaque.
|
|-
|rendertype_item_entity_translucent_cull
|Most flat item textures and most translucent blocks in the inventory, hand, or head slot of an entity. Handles dropped translucent items in Fabulous graphics. Also affects invisible entities while using spectator mode or the gamerule seeFriendlyInvisibles, as well as experience orbs in all graphics settings.
|
|-
|rendertype_leash
|A leash on an entity. Applies when on a fence too.
|[[File:Core shader rendertype leash highlight.png|250x250px]]
|-
|rendertype_outline
|Glowing effect on entities. This buffer draws the already-outlined and semi-transparent glowing, not covering the entire entity like pre-snapshot.
|[[File:Core shader rendertype outline highlight.png|250x250px]]
|}
;Miscellaneous
{| class="wikitable"
!Name
!Description
!Sample Image
|-
|rendertype_glint
|Enchanted glint for items. used only when graphics settings are below fabulous if the item is seen in-world (not in inventory or hand from first person) and either a stained glass pane or a non fully transparent block like honey, ice, slime or any glass block
|
|-
|rendertype_glint_direct
|Enchanted glint for items. used when the item is in inventory, in hand in first person or the item is opaque(see {{code|rendertype_glint}} or {{code|rendertype_glint_translucent}} for list of all blocks that are not considered opaque as of version 1.17.1)
|
|-
|rendertype_glint_translucent
|Enchanted glint for items. used only when graphics settings are on fabulous if the item is seen in-world (not in inventory or hand from first person) and either a stained glass pane or a non fully transparent block like honey, ice, slime or any glass block
|
|-
|rendertype_gui
|
* Mojang Studios loading screen bar
* Text background
* Text box in UI
* Black background on UI elements
* Inventory tooltips
|
|-
|rendertype_gui_ghost_recipe_overlay
|The "ghost items" that appear when clicking on a recipe in the recipe book without the required materials.
|
|-
|rendertype_gui_overlay
|
* Mojang Studios loading screen background
* Item durability bars
* Item cooldown animation
* Hovering over item slots
* Black background of spyglass overlay
* Fade effect in the columns of the resource pack menu
|
|-
|rendertype_gui_text_highlight
|Highlighting text
|
|-
|rendertype_lightning
|Lightning bolts, Ender Dragon death beams
|
|-
|rendertype_lines
|Outline when hovering over a block, Fishing rod line, Debug crosshair, Hitboxes
|[[File:Core shader rendertype lines highlight.png|475x475px]]
|-
|rendertype_text
|All parts of text, including the shadow. This encompasses all text rendered including: F3 Menu, Menu button text, Entity names, Item names, descriptions & amounts in the inventory and the Chat etc.
Also includes the filled in parts of maps placed in item frames and the entirety of non-empty map items held in hand.
|[[File:Core shader rendertype text highlight.png|394x394px]]
|-
|rendertype_text_background
|The background of text_display entities when 'see-through' is set to false.
|
|-
|rendertype_text_background_see_through
|The background of text_display entities when 'see-through' is set to true.
|
|-
|rendertype_text_intensity
|TTF fonts in resource packs.
|
|-
|rendertype_text_intensity_see_through
|TTF fonts in resource packs on text_display entities when 'see-through' is set to true.
|
|-
|rendertype_text_see_through
|The background nameplate of an entitys custom name.
|[[File:Core shader rendertype text see through highlight.png|295x295px]]
|}
{{long section|foot}}
=== Include shaders ===
Include shaders (stored in <code>assets/<namespace>/shaders/include</code>) contain helper functions and variables that can be used in multiple shader programs.
To import an include shader, add one of the following import directives anywhere in a vertex or fragment shader program
* <code>#moj_import <filepath.glsl></code> imports a file from <code>assets/minecraft/shaders/include/<filepath>.glsl</code>
* <code>#moj_import <namespace:path.glsl></code> imports a file from <code>assets/<namespace>/shaders/include/<path>.glsl</code>
When importing an include shader, the game replaces the import directive with the contents of the include shader. ''The imported file needs to end with an empty line, otherwise the shader does not load.''
;Vanilla include shaders
The following include shaders are used throughout the vanilla resource pack
{| class="wikitable"
! Name
! Description
|-
| fog.glsl
| Contains the <code>linear_fog</code> function to calculate the color based on the vertex distance.
|-
| light.glsl
| Contains the <code>minecraft_mix_light</code> function, used to calculate face lighting in entity shaders.
|-
| matrix.glsl
| Contains the <code>mat2_rotate_z</code> function that returns the rotation matrix for a vec2 around the z-axis.
|-
| projection.glsl
| Contains the <code>projection_from_position</code> function.
|}
=== Post-processing effects ===
As mentioned previously, post-processing effects are used in menu backgrounds, when spectating certain mobs to create vision effects, the Fabulous! graphics setting, and when rendering the [[glowing]] effect.
There are currently six post-processing effects used in the game:
{| class="wikitable"
! Name
! Use
|-
| blur
| Blurs the background when in menus
|-
| creeper
| Used when spectating a [[creeper]]
|-
| entity_outline
| Used when an entity with the [[glowing]] effect is on-screen
|-
| invert
| Used when spectating an [[enderman]]
|-
| spider
| Used when spectating a [[spider]]
|-
| transparency
| Used when the graphics mode is set to "Fabulous!"
|}
;Post-effect file format
Post-processing effects are made up of multiple passes and render targets targets. A target is a buffer that can be read from and written to. The game provides some built-in targets that contain certain parts of the game world (particles, water, etc), and you can define your own to read and write data to. A pass can have multiple inputs from png textures or render targets.
Post-processing effects are defined in <code>assets/<namespace>/post_effect/<post effect>.json</code>. ''Note that post-processing effects are applied before the HUD and GUI elements are rendered''
<div class="treeview">
* {{nbt | compound}} The root tag
** {{nbt | compound | targets}} Custom render targets to be used by render passes
*** {{nbt | compound | target definition}} The key is the name of the target
**** {{nbt | integer | width}} The width of the target
**** {{nbt | integer | height}} The height of the target
**** ''If width and height are not present, the target matches the size of the game window''
** {{nbt | list | passes}} Render passes
*** {{nbt | compound | pass}} A render pass
**** {{nbt | string | program}} The namespaced id of a [[#Shader program configuration|shader program configuration]] to use for this pass, relative to the shaders folder. <code>minecraft:post/box_blur</code> resolves to <code>assets/minecraft/shaders/post/box_blur.json</code>
**** {{nbt | list | inputs}} A list of render target inputs and / or texture inputs
***** {{nbt | compound | render target input}}
****** {{nbt | string | sampler_name}} The name of the sampler uniform
******* ''Setting this to <code>MainDepth</code>, for example, makes a sampler2D uniform called <code>MainDepthSampler</code> available to the shader program for this pass''
****** {{nbt | boolean | bilinear}} Default: false. If set to true, the sampler uses bilinear filtering instead of nearest neighbor
****** {{nbt | string | target}} The name of the target. Can either be a custom target as specified in <code>targets</code> above, or one of the following built in targets: <code>minecraft:main</code>, <code>minecraft:translucent</code>, <code>minecraft:item_entity</code>, <code>minecraft:particles</code>, <code>minecraft:weather</code>, <code>minecraft:clouds</code>, or <code>minecraft:entity_outline</code>
****** {{nbt | boolean | use_depth_buffer}} Default: false. If set to true, it samples from the depth texture instead of the color texture.
***** {{nbt | compound | texture input}}
****** {{nbt | string | sampler_name}} The name of the sampler uniform
******* ''Setting this to <code>MyTexture</code>, for example, makes a sampler2D uniform called <code>MyTextureSampler</code> available to the shader program for this pass''
****** {{nbt | boolean | bilinear}} Default: false. If set to true, the sampler uses bilinear filtering instead of nearest neighbor
****** {{nbt | string | location}} The resource location of the texture. <code>my_namespace:post_texture</code> resolves to <code>assets/my_namespace/textures/effect/post_texture.png</code>
****** {{nbt | integer | width}} The width of the texture in pixels
****** {{nbt | integer | height}} The height of the texture in pixels
**** {{nbt | string | output}} The target to output to. Can either be a custom target as specified in <code>targets</code> above or <code>minecraft:main</code>. ''Note: you cannot read and write to the same target in the same pass''
**** {{nbt | list | uniforms}} A list of uniforms to pass to the shader program. ''Uniforms must also be defined in the shader program configuration to be accessible in shader code''
***** {{nbt | compound | uniform (number)}}
****** {{nbt | float}}{{nbt | int | uniform value}} The value of the uniform. The key is the uniform name
***** {{nbt | compound | uniform (vector or matrix)}}
****** {{nbt | string | name}} The name of the uniform
****** {{nbt | list | values}} Uniform values. ''If two floating point numbers are specified here, the uniform type is vec2, and so on''
</div>
=== Render process ===
Each frame is rendered in the following order{{info needed|Verify this order}}
* The world, including entities, blocks, the sky, items, etc is rendered (by core shaders)
* Any Post effects are applied as necessary
* The GUI and HUD elements are rendered (by core shaders)
{{expand section}}
=== Shader program configuration ===
A shader program configuration file defines the vertex shader, fragment shader, samplers, uniforms, and preprocessor define directives for a shader program. These are used by both core shaders and post-processing effects
<div class="treeview">
* {{nbt | compound}} The root tag
** {{nbt | string | vertex}}: A namespaced id of a vertex shader to use. <code>minecraft:core/particle</code> resolves to <code>assets/minecraft/shaders/core/particle.vsh</code>
** {{nbt | string | fragment}}: A namespaced id of a fragment shader to use. <code>minecraft:core/particle</code> resolves to <code>assets/minecraft/shaders/core/particle.fsh</code>
** {{nbt | compound | defines}} Preprocessor directives to be injected into the shader source before it is compiled
*** {{nbt | compound | values}} Preprocessor directives with a value, can be used with <code>#ifdef</code>, <code>#ifndef</code> or directly as a variable in a program.
**** {{nbt | string | value}} A preprocessor directive. The key is the name of the directive. It can be anything, but must be in all capitals. It is injected as <code>#define <key> <value></code> at the top of the shader source.
*** {{nbt | list | flags}} Flag directives, can be used with <code>#ifdef</code> or <code>#ifndef</code> in a shader.
**** {{nbt | string | flag}} The name of a flag. This can be anything, but must be in all capitals. It is injected as <code>#define <key></code> at the top of the shader source.
** {{nbt | list | samplers}}: A list of samplers that are available to the shaders
*** {{nbt | compound}}: A [https://www.khronos.org/opengl/wiki/Sampler_(GLSL) sampler]
**** {{nbt | string | name}}: The name of the sampler
** {{nbt | list | uniforms}}: A list of uniforms that are available to the shaders
***{{nbt | compound}}: A [https://www.khronos.org/opengl/wiki/GLSL_Uniforms uniform]
****{{nbt | string | name}}: The name of the uniform. Refer to [[#Vanilla uniforms|the list of vanilla uniforms]] for built in uniforms
**** {{nbt | string | type}}: The type of the uniform. Can be one of <code>int</code>, <code>float</code>, <code>matrix4x4</code>, <code>matrix3x3</code> and <code>matrix2x2</code>. <code>int</code> can also be interpreted as <code>ivec2</code>, <code>ivec3</code> or <code>ivec4</code> depending on how many values are actually included in <code>values</code>. <code>float</code> can also be interpreted as <code>vec2</code>, <code>vec3</code> or <code>vec4</code> depending on how many values are actually included in <code>values</code>
**** {{nbt | int | count}}: The number of values included in <code>values</code>
**** {{nbt | list | values}}: The value of the uniform, given as a list of floats. The length of the list should be the same as <code>count</code>
</div>
==== Vanilla uniforms ====
A list of uniforms that are provided by the game.
;Common Uniforms
These uniforms are available in both core and post-processing shaders
*(matrix4x4) '''ProjMat''': The projection matrix
*(vec2) '''ScreenSize''': The resolution of the current framebuffer in pixels (width, height)
*(float) '''GameTime''': The current age of the world. This is the result of <code>/time query gametime</code> modulo 24000 and divided by 24000. It increases from 0 and reaches 1 roughly 20 minutes later, it then resets back to 0
;Post-processing uniforms
These uniforms are only available in post-processing shaders
*(vec2) '''InSize''': The width and height of the input buffer in pixels
*(vec2) '''OutSize''': The width and height of the output buffer in pixels
;Core uniforms
These uniforms are only available in core shaders. Some are only available in certain shaders.
*(matrix4x4) '''ModelViewMat''': The model-view matrix
*(matrix4x4) '''TextureMat''': 4D matrix used to transform UV's for item glint effects{{info needed|Verify if this is available in all core shaders}}
*(vec4) '''ColorModulator''': A color multiplier that can be set in game code to modify the final color of objects
*(vec3) '''Light0_Direction''': First light direction, used in vanilla to calculate entity lighting
*(vec3) '''Light1_Direction''': Second light direction, used in vanilla to calculate entity lighting
*(float) '''FogStart''': The distance from the camera that fog starts to be applied
*(float) '''FogEnd''': The distance from the camera that fog is fully applied, objects further than this distance are hidden by fog
*(vec4) '''FogColor''': The color of the fog
*(vec3) '''ModelOffset''': The offset of the model being rendered. This is only available in terrain shaders to offset chunk sections to their correct position
*(float) '''LineWidth''': The width of the line. Only available in the <code>rendertype_lines</code> shader
*(float) '''AmbientLightFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''SkyFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''BlockFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(int) '''UseBrightLightmap''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''SkyLightColor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''NightVisionFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''DarknessScale''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''DarkenWorldFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
*(float) '''BrightnessFactor''' Only available in the <code>lightmap</code> shader{{info needed|Verify what this does / is used for}}
== Bedrock Edition ==
{{stub section}}
Since [[Bedrock Edition 1.18.30]], third party shader resource packs are no longer supported on all devices except Fire OS, due to the implementation of [[RenderDragon]]. Third party shader packs are supported with the Deferred Rendering Pipeline, currently being tested {{upcoming|BE}}
== History ==
{{HistoryTable
|{{HistoryLine|java}}
|{{HistoryLine||1.7.2|dev=13w38a|Shaders were added for Super Secret Settings.}}
|{{HistoryLine||1.8|dev=14w05a|The Creeper and Spider shaders were added. Shaders are automatically applied in [[spectator]] mode when viewing the world as a [[creeper]], [[spider]] or [[enderman]].}}
|{{HistoryLine|||dev=14w05b|Shaders have been removed from view when changing perspective while spectating a mob.<ref name="NoBug">{{bug|MC-46727#comment-219617}}</ref>|{{key|F4}} toggles different shaders rather than turning them off.<ref name="NoBug"/>}}
|{{HistoryLine|||dev=14w06a|The Entity Outline shader was added.}}
|{{HistoryLine||1.9|dev=15w31a|Removed the Super Secret Settings button for an internal rewrite.<ref>{{tweet|_grum|627141591942209536|nah just rewriting it all :p They are still in the game, the button is just gone atm. It would make more sense to keybind imho|July 31, 2015}}</ref>}}
|{{HistoryLine||1.16|dev=20w22a|The Transparency shader was added for ''Fabulous!'' graphics mode.}}
|{{HistoryLine||1.17|dev=21w10a|Core shaders were added.}}
|{{HistoryLine||1.19|dev=22w12a|There are now shader files for translucent entity rendering.}}
|{{HistoryLine||1.20.5|dev=24w05a|The unused attributes array in core shader definitions has been removed.|The unused <code>position_color_normal</code> and <code>position_tex_lightmap_color</code> shaders have been removed|The <code>position_tex_color_normal shader</code> (only used by clouds) has been replaced by <code>rendertype_clouds</code>|The <code>IViewRotMat</code> uniform has been removed, and the Position attribute for entities is now in (camera relative) world space|Light direction uniforms are no longer premultiplied by the view matrix}}
|{{HistoryLine|||dev=24w09a|The menu background dirt texture has been replaced by a post-processing blur shader.}}
|{{HistoryLine|||dev=24w11a|All unused post-processing shaders that were used for Super Secret Settings have been removed. ([[Shader/Before_1.9]])}}
|{{HistoryLine||1.21.2|dev=24w34a|Shader program configurations can now specify preprocessor define directives to apply to their linked shaders.|The format of core shader and post-processing shader configurations have been consolidated.|The <code>rendertype_entity_glint_direct</code> shader has been removed (replaced by <code>rendertype_entity_glint</code>).|The <code>rendertype_entity_translucent_cull</code> shader has been removed (replaced by <code>rendertype_item_entity_translucent_cull</code>).}}
}}
==Gallery==
<gallery>
File:CreeperVision.png|The creeper vision shader
File:EndermanVision.png|The enderman vision shader
File:SpiderVision.png|The spider vision shader
</gallery>
== Issues ==
{{issue list}}
== References ==
{{reflist}}
== External links ==
* [https://docs.google.com/document/d/15TOAOVLgSNEoHGzpNlkez5cryH3hFF3awXL5Py81EMk/edit?usp=sharing Minecraft Vanilla Shaders Guide]
* [https://github.com/ShockMicro/Minecraft-Shaders/wiki/ Vanilla Shaders Wiki]
* [https://github.com/Nettakrim/Souper-Secret-Settings/blob/main/ResourcepackGuide/ResourcepackGuide.md Minecraft Post-Processing Shaders Guide]
== Navigation ==
{{Navbox resource packs}}
{{Navbox Java Edition technical|resourcepack}}
[[Category:Gameplay]]
[[de:Shaders]]
[[es:Filtros]]
[[fr:Filtres]]
[[pl:Shadery]]
[[pt:Shaders]]
[[ru:Шейдеры]]
[[zh:着色器]]