OptiFine 提供的数据
统一变量
纹理
通用
uniform sampler2D shadowtex0;
uniform sampler2D shadowtex1;
uniform sampler2D depthtex0;
uniform sampler2D depthtex1;
uniform sampler2D depthtex2;
uniform sampler2D colortex4;
uniform sampler2D colortex5;
uniform sampler2D colortex6;
uniform sampler2D colortex7;
uniform sampler2D colortex8;
uniform sampler2D colortex9;
uniform sampler2D colortex10;
uniform sampler2D colortex11;
uniform sampler2D colortex12;
uniform sampler2D colortex13;
uniform sampler2D colortex14;
uniform sampler2D colortex15;
uniform sampler2D shadowcolor0;
uniform sampler2D shadowcolor1;
uniform sampler2D noisetex;
几何缓冲专用
uniform sampler2D gtexture;
uniform sampler2D lightmap;
uniform sampler2D normals;
uniform sampler2D specular;
延迟处理专用
uniform sampler2D colortex0;
uniform sampler2D colortex1;
uniform sampler2D colortex2;
uniform sampler2D colortex3;
顶点属性
in vec3 vaPosition; // position (x, y, z) 1.17+,对于地形(terrain)来说是区块起始位置,需要配合 chunkOffset 使用
in vec4 vaColor; // color (r, g, b, a) 1.17+
in vec2 vaUV0; // texture (u, v) 1.17+
// in ivec2 vaUV1; // overlay (u, v) 1.17+,在原版中的作用被 entityColor 替代,若在 Iris 中声明此属性可能导致报错
in ivec2 vaUV2; // lightmap (u, v) 1.17+
in vec3 vaNormal; // normal (x, y, z) 1.17+
in vec3 mc_Entity; // xy = 方块ID, 渲染器类型 方块 ID 只用于在 block.properties 中有定义的方块
in vec2 mc_midTexCoord; // st = midTexU, midTexV 精灵图的纹理中央UV
in vec4 at_tangent; // xyz = 切向量, w = 手系
in vec3 at_velocity; // 上一帧的顶点偏移量 视口坐标,仅实体和方块实体
in vec3 at_midBlock; // 向方块中心偏移1/64m 仅方块
标准宏
标准宏会在每个着色器文件的 #version 行后自动定义,可以在着色器程序中随时使用,无需进行手动定义。
- Minecraft 版本
- #define MC_VERSION <value>
值为 122 格式(主 1, 次 2, 发布 2) 例如: JE 1.9.4->
10904、 JE 1.11.2->11102等。 - 最高支持的 GL 版本
- #define MC_GL_VERSION <value>
整型值,例如:
210、320、450 - 最高支持的 GLSL 版本
- #define MC_GLSL_VERSION <value>
整型值,例如:
120、150、450 - 操作系统
下列之一:
#define MC_OS_WINDOWS #define MC_OS_MAC #define MC_OS_LINUX #define MC_OS_OTHER- 驱动程序
下列之一:
#define MC_GL_VENDOR_AMD #define MC_GL_VENDOR_ATI #define MC_GL_VENDOR_INTEL #define MC_GL_VENDOR_MESA #define MC_GL_VENDOR_NVIDIA #define MC_GL_VENDOR_XORG #define MC_GL_VENDOR_OTHER- GPU
下列之一:
#define MC_GL_RENDERER_RADEON #define MC_GL_RENDERER_GEFORCE #define MC_GL_RENDERER_QUADRO #define MC_GL_RENDERER_INTEL #define MC_GL_RENDERER_GALLIUM #define MC_GL_RENDERER_MESA #define MC_GL_RENDERER_OTHER- OpenGL 扩展
与受支持的 GL 扩展同名的前缀为
MC_的宏。例如,当支持扩展
GL_ARB_shader_texture_lod时,会定义宏MC_GL_ARB_shader_text_lod。只有支持且引用了的扩展才会被添加到着色器中。
- 设置
<value>的值由光影选择页面的设置给出。#define MC_FXAA_LEVEL <value> // 当 FXAA 启用时,值:2、4 #define MC_NORMAL_MAP // 当法线贴图启用时 #define MC_SPECULAR_MAP // 当高光贴图启用时 #define MC_RENDER_QUALITY <value> // 值:0.5、0.70710677、1.0、1.4142135、2.0 #define MC_SHADOW_QUALITY <value> // 值:0.5、0.70710677、1.0、1.4142135、2.0 #define MC_HAND_DEPTH <value> // 值:0.0625、0.125、0.25 #define MC_OLD_HAND_LIGHT // 当经典手持光源启用时 #define MC_OLD_LIGHTING // 当经典光照启用时 #define MC_ANISOTROPIC_FILTERING <value> // 当各向异性过滤启用时- 纹理
见 OptiFineDoc "texture.properties"
#define MC_TEXTURE_FORMAT_LAB_PBR // LabPBR 纹理格式 ([[[Wiki|https://wiki.shaderlabs.org/wiki/LabPBR_Material_Standard]]]) #define MC_TEXTURE_FORMAT_LAB_PBR_1_3 // 版本 1.3你也可以在站内找到 LabPBR 格式标准的翻译版本。
- 渲染阶段
<const>其值按执行顺序给出,用于统一变量renderStage。由于部分几何共用一个几何缓冲程序,因此可以使用形如if(renderStage == MC_RENDER_STAGE_XXX)进行当前渲染几何类型判断。#define MC_RENDER_STAGE_NONE <const> // 未定义 #define MC_RENDER_STAGE_SKY <const> // 天空 #define MC_RENDER_STAGE_SUNSET <const> // 日出和日落的天空覆盖 #define MC_RENDER_STAGE_CUSTOM_SKY <const> // 自定义天空 #define MC_RENDER_STAGE_SUN <const> // 太阳 #define MC_RENDER_STAGE_MOON <const> // 月亮 #define MC_RENDER_STAGE_STARS <const> // 星星 #define MC_RENDER_STAGE_VOID <const> // 虚空 #define MC_RENDER_STAGE_TERRAIN_SOLID <const> // 固体地形 #define MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED <const> // 带有 MipMap 的裁切地形 #define MC_RENDER_STAGE_TERRAIN_CUTOUT <const> // 裁切地形 #define MC_RENDER_STAGE_ENTITIES <const> // 实体 #define MC_RENDER_STAGE_BLOCK_ENTITIES <const> // 方块实体 #define MC_RENDER_STAGE_DESTROY <const> // 挖掘裂纹覆盖 #define MC_RENDER_STAGE_OUTLINE <const> // 方块选择框 #define MC_RENDER_STAGE_DEBUG <const> // 调试渲染 #define MC_RENDER_STAGE_HAND_SOLID <const> // 固体手持物品 #define MC_RENDER_STAGE_TERRAIN_TRANSLUCENT <const> // 半透明地形 #define MC_RENDER_STAGE_TRIPWIRE <const> // 绊线 #define MC_RENDER_STAGE_PARTICLES <const> // 粒子 #define MC_RENDER_STAGE_CLOUDS <const> // 云 #define MC_RENDER_STAGE_RAIN_SNOW <const> // 雨雪 #define MC_RENDER_STAGE_WORLD_BORDER <const> // 世界边界 #define MC_RENDER_STAGE_HAND_TRANSLUCENT <const> // 半透明手持物品
05 二月 2026