You've already forked godot
							
							
				mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-03 11:50:27 +00:00 
			
		
		
		
	Avoid unnecessary version_get_uniform() calls
This commit is contained in:
		@@ -254,96 +254,96 @@ public:
 | 
				
			|||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* clang-format off */
 | 
						/* clang-format off */
 | 
				
			||||||
#define TRY_GET_UNIFORM if (version_get_uniform(p_uniform, p_version, p_variant, p_specialization) < 0) return
 | 
					#define TRY_GET_UNIFORM(var_name) int var_name = version_get_uniform(p_uniform, p_version, p_variant, p_specialization); if (var_name < 0) return
 | 
				
			||||||
	/* clang-format on */
 | 
						/* clang-format on */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1f(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1f(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, double p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, double p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1f(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1f(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint8_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint8_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1ui(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1ui(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int8_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int8_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1i(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1i(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint16_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint16_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1ui(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1ui(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int16_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int16_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1i(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1i(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint32_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, uint32_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1ui(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1ui(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int32_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, int32_t p_value, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform1i(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_value);
 | 
							glUniform1i(uniform_location, p_value);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Color &p_color, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Color &p_color, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLfloat col[4] = {{ p_color.r, p_color.g, p_color.b, p_color.a }};
 | 
							GLfloat col[4] = {{ p_color.r, p_color.g, p_color.b, p_color.a }};
 | 
				
			||||||
		glUniform4fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, col);
 | 
							glUniform4fv(uniform_location, 1, col);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector2 &p_vec2, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector2 &p_vec2, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLfloat vec2[2] = {{ float(p_vec2.x), float(p_vec2.y) }};
 | 
							GLfloat vec2[2] = {{ float(p_vec2.x), float(p_vec2.y) }};
 | 
				
			||||||
		glUniform2fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, vec2);
 | 
							glUniform2fv(uniform_location, 1, vec2);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Size2i &p_vec2, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Size2i &p_vec2, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLint vec2[2] = {{ GLint(p_vec2.x), GLint(p_vec2.y) }};
 | 
							GLint vec2[2] = {{ GLint(p_vec2.x), GLint(p_vec2.y) }};
 | 
				
			||||||
		glUniform2iv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, vec2);
 | 
							glUniform2iv(uniform_location, 1, vec2);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector3 &p_vec3, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector3 &p_vec3, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLfloat vec3[3] = {{ float(p_vec3.x), float(p_vec3.y), float(p_vec3.z) }};
 | 
							GLfloat vec3[3] = {{ float(p_vec3.x), float(p_vec3.y), float(p_vec3.z) }};
 | 
				
			||||||
		glUniform3fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, vec3);
 | 
							glUniform3fv(uniform_location, 1, vec3);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector4 &p_vec4, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Vector4 &p_vec4, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLfloat vec4[4] = {{ float(p_vec4.x), float(p_vec4.y), float(p_vec4.z), float(p_vec4.w) }};
 | 
							GLfloat vec4[4] = {{ float(p_vec4.x), float(p_vec4.y), float(p_vec4.z), float(p_vec4.w) }};
 | 
				
			||||||
		glUniform4fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, vec4);
 | 
							glUniform4fv(uniform_location, 1, vec4);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform2f(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_a, p_b);
 | 
							glUniform2f(uniform_location, p_a, p_b);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform3f(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_a, p_b, p_c);
 | 
							glUniform3f(uniform_location, p_a, p_b, p_c);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c, float p_d, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c, float p_d, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		glUniform4f(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), p_a, p_b, p_c, p_d);
 | 
							glUniform4f(uniform_location, p_a, p_b, p_c, p_d);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Transform3D &p_transform, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Transform3D &p_transform, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		const Transform3D &tr = p_transform;
 | 
							const Transform3D &tr = p_transform;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		GLfloat matrix[16] = {{ /* build a 16x16 matrix */
 | 
							GLfloat matrix[16] = {{ /* build a 16x16 matrix */
 | 
				
			||||||
@@ -365,11 +365,11 @@ public:
 | 
				
			|||||||
			(GLfloat)1
 | 
								(GLfloat)1
 | 
				
			||||||
		}};
 | 
							}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		glUniformMatrix4fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, false, matrix);
 | 
							glUniformMatrix4fv(uniform_location, 1, false, matrix);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Transform2D &p_transform, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Transform2D &p_transform, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		const Transform2D &tr = p_transform;
 | 
							const Transform2D &tr = p_transform;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		GLfloat matrix[16] = {{ /* build a 16x16 matrix */
 | 
							GLfloat matrix[16] = {{ /* build a 16x16 matrix */
 | 
				
			||||||
@@ -391,11 +391,11 @@ public:
 | 
				
			|||||||
			(GLfloat)1
 | 
								(GLfloat)1
 | 
				
			||||||
		}};
 | 
							}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		glUniformMatrix4fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, false, matrix);
 | 
							glUniformMatrix4fv(uniform_location, 1, false, matrix);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Projection &p_matrix, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
						_FORCE_INLINE_ void version_set_uniform(Uniforms p_uniform, const Projection &p_matrix, RID p_version, ShaderVariant p_variant{defvariant}, uint64_t p_specialization = {defspec}) {{
 | 
				
			||||||
		TRY_GET_UNIFORM;
 | 
							TRY_GET_UNIFORM(uniform_location);
 | 
				
			||||||
		GLfloat matrix[16];
 | 
							GLfloat matrix[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (int i = 0; i < 4; i++) {{
 | 
							for (int i = 0; i < 4; i++) {{
 | 
				
			||||||
@@ -404,7 +404,7 @@ public:
 | 
				
			|||||||
			}}
 | 
								}}
 | 
				
			||||||
		}}
 | 
							}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		glUniformMatrix4fv(version_get_uniform(p_uniform, p_version, p_variant, p_specialization), 1, false, matrix);
 | 
							glUniformMatrix4fv(uniform_location, 1, false, matrix);
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef TRY_GET_UNIFORM
 | 
					#undef TRY_GET_UNIFORM
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,13 +30,13 @@ protected:
 | 
				
			|||||||
R"<!>(
 | 
					R"<!>(
 | 
				
			||||||
precision highp float;
 | 
					precision highp float;
 | 
				
			||||||
precision highp int;
 | 
					precision highp int;
 | 
				
			||||||
 | 
					/* clang-format on */
 | 
				
			||||||
layout(location = 0) in highp vec3 vertex;
 | 
					layout(location = 0) in highp vec3 vertex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
out highp vec4 position_interp;
 | 
					out highp vec4 position_interp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
	position_interp = vec4(vertex.x,1,0,1);
 | 
						position_interp = vec4(vertex.x, 1, 0, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
)<!>"
 | 
					)<!>"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ R"<!>(#[compute]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#VERSION_DEFINES
 | 
					#VERSION_DEFINES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define M_PI 3.14159265359
 | 
					#define M_PI 3.14159265359
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,9 +12,8 @@ lines = "#define MODE_LINES";
 | 
				
			|||||||
layout(location = 0) out vec3 uv_interp;
 | 
					layout(location = 0) out vec3 uv_interp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef MODE_LINES
 | 
					#ifdef MODE_LINES
 | 
				
			||||||
	uv_interp = vec3(0,0,1);
 | 
						uv_interp = vec3(0, 0, 1);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,7 +28,7 @@ void main() {
 | 
				
			|||||||
layout(location = 0) out vec4 dst_color;
 | 
					layout(location = 0) out vec4 dst_color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main() {
 | 
					void main() {
 | 
				
			||||||
	dst_color = vec4(1,1,0,0);
 | 
						dst_color = vec4(1, 1, 0, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
)<!>"
 | 
					)<!>"
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user