diff options
| -rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.cpp | 1 | ||||
| -rw-r--r-- | drivers/gles3/shaders/scene.glsl | 2 | ||||
| -rw-r--r-- | drivers/gles3/storage/material_storage.cpp | 1 | ||||
| -rw-r--r-- | editor/editor_paths.cpp | 16 | ||||
| -rw-r--r-- | editor/project_manager/project_dialog.cpp | 15 | ||||
| -rw-r--r-- | modules/gdscript/tests/scripts/.editorconfig | 2 | ||||
| -rw-r--r-- | modules/noise/doc_classes/FastNoiseLite.xml | 4 | ||||
| -rw-r--r-- | servers/rendering/shader_compiler.cpp | 4 | ||||
| -rw-r--r-- | servers/rendering/shader_language.cpp | 4 |
9 files changed, 23 insertions, 26 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index c2d1784958..a73f14c796 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -3443,6 +3443,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params, } material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::MODEL_FLAGS, inst->flags_cache, shader->version, instance_variant, spec_constants); + material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::INSTANCE_OFFSET, uint32_t(inst->shader_uniforms_offset), shader->version, instance_variant, spec_constants); if (p_pass_mode == PASS_MODE_MATERIAL) { material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::UV_OFFSET, p_params->uv_offset, shader->version, instance_variant, spec_constants); diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index 9ce10a4488..fcfbeddb9e 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -430,6 +430,7 @@ uniform highp mat4 world_transform; uniform highp vec3 compressed_aabb_position; uniform highp vec3 compressed_aabb_size; uniform highp vec4 uv_scale; +uniform highp uint instance_offset; uniform highp uint model_flags; @@ -1201,6 +1202,7 @@ ivec2 multiview_uv(ivec2 uv) { uniform highp mat4 world_transform; uniform mediump float opaque_prepass_threshold; uniform highp uint model_flags; +uniform highp uint instance_offset; #if defined(RENDER_MATERIAL) layout(location = 0) out vec4 albedo_output_buffer; diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp index 5dca149d99..684f179492 100644 --- a/drivers/gles3/storage/material_storage.cpp +++ b/drivers/gles3/storage/material_storage.cpp @@ -1379,6 +1379,7 @@ MaterialStorage::MaterialStorage() { actions.check_multiview_samplers = RasterizerGLES3::get_singleton()->is_xr_enabled(); actions.global_buffer_array_variable = "global_shader_uniforms"; + actions.instance_uniform_index_variable = "instance_offset"; shaders.compiler_scene.initialize(actions); } diff --git a/editor/editor_paths.cpp b/editor/editor_paths.cpp index ff869f8a8a..883116bab6 100644 --- a/editor/editor_paths.cpp +++ b/editor/editor_paths.cpp @@ -257,22 +257,6 @@ EditorPaths::EditorPaths() { } } - // Check that `.editorconfig` file exists. - String project_editorconfig_path = "res://.editorconfig"; - if (!FileAccess::exists(project_editorconfig_path)) { - Ref<FileAccess> f = FileAccess::open(project_editorconfig_path, FileAccess::WRITE); - if (f.is_valid()) { - f->store_line("root = true"); - f->store_line(""); - f->store_line("[*]"); - f->store_line("charset = utf-8"); - f->close(); - } else { - ERR_PRINT("Failed to create file " + project_editorconfig_path.quote() + "."); - } - FileAccess::set_hidden_attribute(project_editorconfig_path, true); - } - Engine::get_singleton()->set_shader_cache_path(project_data_dir); // Editor metadata dir. diff --git a/editor/project_manager/project_dialog.cpp b/editor/project_manager/project_dialog.cpp index 857c4461c4..7aadb9ac3c 100644 --- a/editor/project_manager/project_dialog.cpp +++ b/editor/project_manager/project_dialog.cpp @@ -552,6 +552,21 @@ void ProjectDialog::ok_pressed() { fa_icon->store_string(get_default_project_icon()); EditorVCSInterface::create_vcs_metadata_files(EditorVCSInterface::VCSMetadata(vcs_metadata_selection->get_selected()), path); + + // Ensures external editors and IDEs use UTF-8 encoding. + const String editor_config_path = path.path_join(".editorconfig"); + Ref<FileAccess> f = FileAccess::open(editor_config_path, FileAccess::WRITE); + if (f.is_null()) { + // .editorconfig isn't so critical. + ERR_PRINT("Couldn't create .editorconfig in project path."); + } else { + f->store_line("root = true"); + f->store_line(""); + f->store_line("[*]"); + f->store_line("charset = utf-8"); + f->close(); + FileAccess::set_hidden_attribute(editor_config_path, true); + } } // Two cases for importing a ZIP. diff --git a/modules/gdscript/tests/scripts/.editorconfig b/modules/gdscript/tests/scripts/.editorconfig index da1efefe3c..34fff8d1de 100644 --- a/modules/gdscript/tests/scripts/.editorconfig +++ b/modules/gdscript/tests/scripts/.editorconfig @@ -1,5 +1,3 @@ -# This file is required to workaround `.editorconfig` autogeneration (see #96845). - # Some tests handle invalid syntax deliberately; exclude relevant attributes. [parser/features/mixed_indentation_on_blank_lines.gd] diff --git a/modules/noise/doc_classes/FastNoiseLite.xml b/modules/noise/doc_classes/FastNoiseLite.xml index f2a6c60376..6f6a637893 100644 --- a/modules/noise/doc_classes/FastNoiseLite.xml +++ b/modules/noise/doc_classes/FastNoiseLite.xml @@ -91,10 +91,10 @@ Cellular includes both Worley noise and Voronoi diagrams which creates various regions of the same value. </constant> <constant name="TYPE_SIMPLEX" value="0" enum="NoiseType"> - As opposed to [constant TYPE_PERLIN], gradients exist in a simplex lattice rather than a grid lattice, avoiding directional artifacts. + As opposed to [constant TYPE_PERLIN], gradients exist in a simplex lattice rather than a grid lattice, avoiding directional artifacts. Internally uses FastNoiseLite's OpenSimplex2 noise type. </constant> <constant name="TYPE_SIMPLEX_SMOOTH" value="1" enum="NoiseType"> - Modified, higher quality version of [constant TYPE_SIMPLEX], but slower. + Modified, higher quality version of [constant TYPE_SIMPLEX], but slower. Internally uses FastNoiseLite's OpenSimplex2S noise type. </constant> <constant name="FRACTAL_NONE" value="0" enum="FractalType"> No fractal noise. diff --git a/servers/rendering/shader_compiler.cpp b/servers/rendering/shader_compiler.cpp index 527a5e5725..e7339b2cdd 100644 --- a/servers/rendering/shader_compiler.cpp +++ b/servers/rendering/shader_compiler.cpp @@ -951,7 +951,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene code = _get_global_shader_uniform_from_type_and_index(p_default_actions.global_buffer_array_variable, code, u.type); } else if (u.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) { //instance variable, index it as such - code = "(" + p_default_actions.instance_uniform_index_variable + "+" + itos(u.instance_index) + ")"; + code = "(" + p_default_actions.instance_uniform_index_variable + "+" + itos(u.instance_index) + "u)"; code = _get_global_shader_uniform_from_type_and_index(p_default_actions.global_buffer_array_variable, code, u.type); } else { //regular uniform, index from UBO @@ -1051,7 +1051,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene code = _get_global_shader_uniform_from_type_and_index(p_default_actions.global_buffer_array_variable, code, u.type); } else if (u.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) { //instance variable, index it as such - code = "(" + p_default_actions.instance_uniform_index_variable + "+" + itos(u.instance_index) + ")"; + code = "(" + p_default_actions.instance_uniform_index_variable + "+" + itos(u.instance_index) + "u)"; code = _get_global_shader_uniform_from_type_and_index(p_default_actions.global_buffer_array_variable, code, u.type); } else { //regular uniform, index from UBO diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index 879a83f519..77035a64f7 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -9089,10 +9089,6 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f _set_error(vformat(RTR("Uniform instances are not yet implemented for '%s' shaders."), shader_type_identifier)); return ERR_PARSE_ERROR; } - if (OS::get_singleton()->get_current_rendering_method() == "gl_compatibility") { - _set_error(RTR("Uniform instances are not supported in gl_compatibility shaders.")); - return ERR_PARSE_ERROR; - } if (uniform_scope == ShaderNode::Uniform::SCOPE_LOCAL) { tk = _get_token(); if (tk.type != TK_UNIFORM) { |
