MineGraph Docs Help

着色器内配置命令

顶点着色器设置

in vec3 mc_Entity;

使用实体 ID 属性。

in vec2 mc_midTexCoord;

使用精灵纹理坐标中点属性。

in vec4 at_tangent;

使用切线属性。

const int countInstances = 1;

实例渲染,当 countInstances > 1 时,几何会多次渲染,见 统一变量 - instanceId

几何着色器设置

#extension GL_ARB_geometry_shader4 : enable

启用 GL_ARB_geometry_shader4 (几何着色器功能)。

const int maxVerticesOut = 3;

为几何着色器设置 GEOMETRY_VERTICES_OUT_ARB (几何着色器输出顶点数)。

片元着色器设置

纹理

uniform <type> shadow;uniform <type> shadowtex0;

使用 1 个阴影深度缓冲区。

uniform <type> watershadow;uniform <type> shadowtex1;

使用 2 个阴影深度缓冲区,覆盖前一项。

uniform <type> shadowcolor0;

使用 1 个阴影颜色缓冲区。

uniform <type> shadowcolor1;

使用 2 个阴影颜色缓冲区,覆盖前一项。

uniform <type> depthtex0;

使用 1 个深度缓冲区。

uniform <type> depthtex1;

使用 2 个深度缓冲区,覆盖前一项。

uniform <type> depthtex2;

使用 3 个深度缓冲区,覆盖前两项。

uniform <type> gdepth;

使用 1 号缓冲区。如果 1 号缓冲区格式为 RGBA,则设置 1 号缓冲区格式为 RGBA32F。

uniform <type> gaux<1-4>;uniform <type> colortex<4-7>;

使用 5-8 个颜色缓冲区。

纹理格式

const int <bufferIndex>Format = <format>;

将特定 ID 缓冲区设置为特定格式。见 纹理单元 ID纹理格式

const int noiseTextureResolution = <int>;

将噪点纹理尺寸设置为 <int> 。默认为 256。

const int <shadowBufferIndex>Format = <format>;

将特定 ID 阴影颜色缓冲区设置为特定格式。见 纹理单元 ID纹理格式

新帧清除

const bool <bufferIndex>Clear = false;
  • 禁用特定 ID 缓冲区的新帧清除,即跳过 glClear()

  • 默认为 false

  • 纹理单元 ID

const vec4 <bufferIndex>ClearColor = vec4(R,G,B,A);
  • 将特定 ID 缓冲区的新帧清除颜色设置为 (R,G,B,A)

  • 只能使用数字进行逐分量设置。

  • 0 号缓冲区默认为雾色 vec4(fogColor, 0.0) ,1 号默认为纯白色 vec4(1.0) ,其余缓冲区默认为纯黑色 vec4(0.0)

const bool <shadowBufferIndex>Clear = false;
  • 禁用特定 ID 阴影颜色缓冲区的新帧清除,即跳过 glClear()

  • 默认为 false

  • 纹理单元 ID

const vec4 <shadowBufferIndex>ClearColor = vec4(R,G,B,A);
  • 将特定 ID 阴影颜色缓冲区的新帧清除颜色设置为 (R,G,B,A)

  • 只能使用数字进行逐分量设置。

  • 默认为纯黑色 vec4(0.0)

纹理过滤

const bool <bufferIndex>MipmapEnabled = true;

启用特定 ID 缓冲区的 Mipmap。默认为 false 。见 纹理单元 ID

const bool generateShadowMipmap = true;

为阴影深度纹理启用 Mipmap。默认为 false

const bool shadowtexMipmap = true;
const bool shadowtex0Mipmap = true;
const bool shadowtex1Mipmap = true;
  • 为 0/1 号阴影深度纹理启用 Mipmap。

  • 序号留空默认为 0 号纹理启用。

  • 默认为 false

const bool generateShadowColorMipmap = true;

为阴影颜色纹理启用 Mipmap。

const bool shadowcolor0Mipmap = true;
const bool shadowColor0Mipmap = true;
const bool shadowcolor1Mipmap = true;
const bool shadowColor1Mipmap = true;
  • 为 0/1 号阴影颜色纹理启用 Mipmap。

  • 序号不可留空。

  • Color 首字母 C 大小写均可。

  • 默认为 false

const bool shadowHardwareFiltering = true;
  • 使用硬件过滤的阴影,此时需要将阴影声明为 sampler2DShadow ,仅可使用 texture() 系列函数采样,采样时相比普通的纹理需要额外提供片元的实际阴影空间深度值用于自动比较。

  • 在 Iris 上可以启用 SEPARATE_HARDWARE_SAMPLERS 特性标志来利用 shadowtex0HWshadowtex1HW 进行硬件过滤,而保留原始的 shadowtex 用于 PCSS 等依赖多次深度比较的效果。

  • 可以使用 shadowHardwareFiltering<0-1> 来启用特定 shadowtex 的硬件过滤功能。

  • 默认为 false

const bool shadowtexNearest = true;
const bool shadowtex0Nearest = true;
const bool shadow0MinMagNearest = true;
const bool shadowtex1Nearest = true;
const bool shadow1MinMagNearest = true;

为 0/1 号阴影深度纹理启用邻近过滤。序号留空默认为 0 号纹理启用。默认为 false

const bool shadowcolor0Nearest = true;
const bool shadowColor0Nearest = true;
const bool shadowColor0MinMagNearest = true;
const bool shadowcolor1Nearest = true;
const bool shadowColor1Nearest = true;
const bool shadowColor1MinMagNearest = true;

为 0/1 号阴影颜色纹理启用邻近过滤。序号不可留空。有 MinMagColor 的首字母 C 仅能为大写。默认为 false

阴影渲染参数

/* SHADOWRES:<int> */const int shadowMapResolution = <int>;

阴影纹理长宽为 <int> ,默认为 1024。

/* SHADOWFOV:<float> */const float shadowMapFov = <float>;

设置后将使用透视投影阴影空间,FOV 为 <float>

/* SHADOWHPL:<float> */const float shadowDistance = <float>;

阴影渲染距离为 <float> ,默认 160。

const float shadowDistanceRenderMul = -1.0;

阴影渲染距离乘数,会渲染更多区域。默认的 -1 表示不剔除,大于 0 的值表示剔除 shadowDistance * shadowDistanceRenderMul 之外的内容,比如,1.0 表示剔除 shadowDistance 之外的内容,0.5 表示剔除 shadowDistance 一半之外的内容,以此类推。

const float shadowIntervalSize = <float>;

将阴影空间吸附到 <float> 的倍数上,默认为 2.0。阴影 Pass 中会将变换后的坐标原点吸附到值的整数倍上,以便玩家在小范围移动时阴影空间不会移动,从而减少阴影闪烁。设置为 0 可以禁用吸附。

输出

/* DRAWBUFFERS:0257 */
  • 按照特定顺序的索引输出到缓冲区中,配合 layout(location = <X>) out 使用。

  • location = 0 输出到 0 号缓冲区, location = 1 输出到 2 号缓冲区, location = 2 输出到 5 号缓冲区,依此类推。

  • 块注释前后需要隔一个空格,冒号前后不能有空格,数字之间不能有空格,只能输出到 0-9 号缓冲区。

/* RENDERTARGETS: 0,2,5,7 */
  • 按照特定顺序的索引输出到缓冲区中,配合 layout(location = <X>) out 使用。

  • location = 0 输出到 0 号缓冲区, location = 1 输出到 2 号缓冲区, location = 2 输出到 5 号缓冲区,依此类推。

  • 块注释前后需要隔一个空格,冒号后需要一个空格,数字和逗号之间不能有空格,可以输出到所有缓冲区。

其他

uniform <type> centerDepthSmooth;

使用平滑中央深度。

/* WETNESSHL:<float> */const float wetnessHalflife = <float>;

将湿润半衰期设置为 <float> ,影响 wetness 的减少时间。默认为 600.0(刻)。

/* DRYNESSHL:<float> */const float drynessHalflife = <float>;

将干燥半衰期设置为 <float> ,影响 wetness 的增长时间。默认为 200.0(刻)。

const float eyeBrightnessHalflife = <float>;

将摄像机处的原版光照强度过渡半衰期设置为 <float> ,影响 eyeBrightnessSmooth 的过渡时间。默认为 10.0(刻)。

const float centerDepthHalflife = <float>;

将中央深度过渡半衰期设置为 <float> ,影响 centerDepthSmooth 的过渡时间。默认为 1.0(刻)。

const float sunPathRotation = <float>;

将太阳倾角设置为 <float> ,正值为向北旋转。默认为 0.0(度)。

const float ambientOcclusionLevel = <float>;

将原版顶点环境光遮蔽强度设置为 <float> 。需要设置在 上。默认为 1.0。

const int superSamplingLevel = <int>;

将超采样级别设置为 <int> 。默认为 1。

10 April 2026