gles2和gles3之间的差异¶
本页记录了gles2和gles3之间的设计差异,这些差异不是错误的结果。可能存在无意的差异,但它们应该作为错误报告。
注解
“gles2”和“gles3”是godot中用于两个基于OpenGL的渲染后端的名称。在图形API方面,gles2后端映射到桌面上的OpenGL 2.1、移动上的OpenGL ES 2.0和Web上的WebGL 1.0。gles3后端映射到桌面上的OpenGL 3.3、移动上的OpenGL ES 3.0和Web上的WebGL 2.0。
粒子¶
gles2不能使用 Particles 或 Particles2D 节点需要高级GPU功能。相反,使用 CPUParticles 或 CPUParticles2D ,它提供与 ParticlesMaterial .
小技巧
粒子和粒子2d可以通过编辑器中的“Convert to CPUParticles”选项转换为其CPU等效节点。
SCREEN_TEXTURE
MIP地图¶
在GLES2中, SCREEN_TEXTURE
(通过A访问 ShaderMaterial )没有计算出MIP映射。因此,当访问不同的LOD时,纹理不会显得模糊。
DEPTH_TEXTURE
¶
而gles2支持 DEPTH_TEXTURE
在着色器中,它可能无法在某些旧硬件(尤其是移动硬件)上工作。
色空间¶
gles2和gles3在不同的颜色空间中。这意味着它们之间的颜色会略有不同,尤其是在使用照明时。
如果你的游戏要同时使用gles2和gles3,你可以使用 if
语句检查并查看输出是否在sRGB中,使用 OUTPUT_IS_SRGB
. OUTPUT_IS_SRGB
是 true
在欢乐2和 false
欢呼雀跃。
HDR¶
GLES不能使用高动态范围(HDR)渲染功能。如果为项目或给定的视区设置了HDR,Godot仍将使用低动态范围(LDR),该范围将视区值限制为 0-1
范围。
空间材料特征¶
在gles2中,在 SpatialMaterial 缺少:
折射
次表面散射
各向异性
透明涂层
深度映射
使用空间材质时,它们甚至不会显示在编辑器中。
自定义 ShaderMaterials ,您可以为这些功能设置值,但它们将不起作用。例如,您仍然可以设置 SSS
在您的明暗器中内置(通常添加次表面散射),但不会发生任何事情。
环境特点¶
在gles2中,在 Environment 缺少:
自动曝光
色调映射
屏幕空间反射
空间环境光遮蔽
景深
辉光(也称为花)
调整
这意味着在gles2环境中,只能设置:
天空(包括程序天空)
环境光
雾
GIProbes¶
GIProbes 不要在GLES2中工作。而是使用 Baked Lightmaps . 有关烘焙光照贴图如何工作的描述,请参见 Baked Lightmaps tutorial .
轻性能¶
在gles2中,由于每个灯光都在一个单独的渲染过程中处理(与gles3相反,gles3都是在一个单独的过程中完成的),因此使用多个灯光时性能会很差。尽量将场景限制在尽可能少的灯光范围内,以获得最佳的性能。
纹理压缩¶
在移动设备上,gles2需要etc纹理压缩,而gles3需要etc2。默认情况下启用ETC2,因此如果使用gles2导出到移动设备,请确保设置项目设置。 rendering/vram_compression/import_etc
然后重新导入纹理。
混合形状¶
gles2不支持混合形状。
底纹语言¶
gles3提供了许多gles2没有的内置函数。以下是在gles2中不可用或支持有限的函数列表。
有关内置glsl函数的完整列表,请参见 Shading Language doc .
功能 |
注意 |
---|---|
vec_type sinh (vec_型) |
|
vec_type cosh (vec_型) |
|
vec_type tanh (vec_型) |
|
vec_type 反双曲正弦 (vec_型) |
|
vec_type 阿科什 (vec_型) |
|
vec_type 反双曲正切 (vec_型) |
|
vec_type 圆 (vec_型) |
|
vec_type 圆场 (vec_型) |
|
vec_type 躯干 (vec_型) |
|
vec_type modf (vec_类型x,out vec_类型i) |
|
vec_bool_type 伊斯南 (vec_型) |
|
vec_bool_type 伊辛 (vec_型) |
|
vec_int_type 浮动位图 (vec_型) |
|
vec_uint_type 漂浮物 (vec_型) |
|
vec_type intbitstofloat (vec_int_类型) |
|
vec_type uintbitstofloat (vec-uint-u型) |
|
mat_type 外部产品 (vec_型,vec_型) |
|
mat_type 转置 (材料类型) |
|
浮动 行列式 (材料类型) |
|
mat_type 逆 (材料类型) |
|
IVEC2 纹理化 (sampler2d_类型S,int lod) |
|
IVEC2 纹理化 (采样立方体S,int lod) |
|
vec4_type 纹理 (S型,Vec2紫外线采样器 [,浮动偏差] ) |
bias 在顶点着色中不可用 |
vec4_type 纹理 (采样立方体S,vec3 uv [,浮动偏差] ) |
bias 在顶点着色中不可用 |
vec4_type 纹理项目 (S型、Vec3紫外线采样器 [,浮动偏差] ) |
bias 在顶点着色中不可用 |
vec4_type 纹理项目 (S型,Vec4-uv采样器 [,浮动偏差] ) |
bias 在顶点着色中不可用 |
vec4_type 纹理图 (S型、Vec2-UV、Float Lod样品) |
仅在某些硬件上的顶点明暗器中可用 |
vec4_type 纹理图 (采样立方体S、vec3 uv、float lod) |
仅在某些硬件上的顶点明暗器中可用 |
vec4_type 纹理项目 (S型、Vec3紫外、Float Lod样品) |
仅在顶点明暗器中可用 |
vec4_type 纹理项目 (S型、Vec4紫外线、Float Lod样品) |
仅在顶点明暗器中可用 |
vec4_type 特赛尔费特 (sampler2d_类型S,ivec2 uv,int lod) |
|
vec_type dFdx (vec_型) |
|
vec_type dFdy (vec_型) |
|
vec_type 宽度 (vec_型) |
Godot还提供许多内置变量和渲染模式。有些在gles2中不受支持。下面是一个内置变量和呈现模式的列表,这些内置变量和呈现模式在写入时将不起作用,甚至在使用gles2后端时可能导致问题。
变量/渲染模式 |
---|
|
|
|
|
|
|