@@ -157,13 +157,17 @@ void SpineSprite3D::upload_batch(SpineBatch3D *item) {
157157 int cast_shadows = item->custom_material ? (int ) shadow_casting : (int ) SHADOW_CASTING_OFF ;
158158 if (cast_shadows != item->last_shadow_casting ) {
159159#if !defined(SPINE_GODOT_EXTENSION) && VERSION_MINOR >= 7
160- RSE ::ShadowCastingSetting setting = cast_shadows == SHADOW_CASTING_ON ? RSE ::SHADOW_CASTING_SETTING_ON :
161- (cast_shadows == SHADOW_CASTING_DOUBLE_SIDED ? RSE ::SHADOW_CASTING_SETTING_DOUBLE_SIDED :
162- (cast_shadows == SHADOW_CASTING_SHADOWS_ONLY ? RSE ::SHADOW_CASTING_SETTING_SHADOWS_ONLY : RSE ::SHADOW_CASTING_SETTING_OFF ));
160+ RSE ::ShadowCastingSetting setting = cast_shadows == SHADOW_CASTING_ON
161+ ? RSE ::SHADOW_CASTING_SETTING_ON
162+ : (cast_shadows == SHADOW_CASTING_DOUBLE_SIDED
163+ ? RSE ::SHADOW_CASTING_SETTING_DOUBLE_SIDED
164+ : (cast_shadows == SHADOW_CASTING_SHADOWS_ONLY ? RSE ::SHADOW_CASTING_SETTING_SHADOWS_ONLY : RSE ::SHADOW_CASTING_SETTING_OFF ));
163165#else
164- RS ::ShadowCastingSetting setting = cast_shadows == SHADOW_CASTING_ON ? RS ::SHADOW_CASTING_SETTING_ON :
165- (cast_shadows == SHADOW_CASTING_DOUBLE_SIDED ? RS ::SHADOW_CASTING_SETTING_DOUBLE_SIDED :
166- (cast_shadows == SHADOW_CASTING_SHADOWS_ONLY ? RS ::SHADOW_CASTING_SETTING_SHADOWS_ONLY : RS ::SHADOW_CASTING_SETTING_OFF ));
166+ RS ::ShadowCastingSetting setting = cast_shadows == SHADOW_CASTING_ON
167+ ? RS ::SHADOW_CASTING_SETTING_ON
168+ : (cast_shadows == SHADOW_CASTING_DOUBLE_SIDED
169+ ? RS ::SHADOW_CASTING_SETTING_DOUBLE_SIDED
170+ : (cast_shadows == SHADOW_CASTING_SHADOWS_ONLY ? RS ::SHADOW_CASTING_SETTING_SHADOWS_ONLY : RS ::SHADOW_CASTING_SETTING_OFF ));
167171#endif
168172 RS::get_singleton ()->instance_geometry_set_cast_shadows_setting (item->instance , setting);
169173 item->last_shadow_casting = cast_shadows;
@@ -258,7 +262,8 @@ void SpineSprite3D::upload_batch(SpineBatch3D *item) {
258262 RS::get_singleton ()->mesh_add_surface (item->mesh , surface);
259263 uint32_t skin_stride;
260264 RS::get_singleton ()->mesh_surface_make_offsets_from_format (surface.format , vertex_capacity, index_capacity, item->surface_offsets ,
261- item->vertex_stride , item->normal_tangent_stride , item->attribute_stride , skin_stride);
265+ item->vertex_stride , item->normal_tangent_stride , item->attribute_stride ,
266+ skin_stride);
262267 item->index_stride = RS::get_singleton ()->mesh_surface_get_format_index_stride (surface.format , vertex_capacity);
263268 item->vertex_buffer = surface.vertex_data ;
264269 item->attribute_buffer = surface.attribute_data ;
@@ -281,9 +286,8 @@ void SpineSprite3D::upload_batch(SpineBatch3D *item) {
281286 positions_changed |= position_changed;
282287 vertex_data_changed |= position_changed;
283288 if (item->uses_tangents ) {
284- bool tangent_changed = update_tangent_bytes (positions + item->surface_offsets [Mesh::ARRAY_TANGENT ] +
285- i * item->normal_tangent_stride ,
286- v.tangent );
289+ bool tangent_changed = update_tangent_bytes (positions + item->surface_offsets [Mesh::ARRAY_TANGENT ] + i * item->normal_tangent_stride ,
290+ v.tangent );
287291 tangents_changed |= tangent_changed;
288292 vertex_data_changed |= tangent_changed;
289293 }
@@ -491,13 +495,12 @@ void SpineSprite3D::_bind_methods() {
491495
492496SpineSprite3D::SpineSprite3D ()
493497 : update_mode(SpineConstant::UpdateMode_Process), time_scale(1 .0f ), pixel_size(0 .01f ), slot_depth_offset(0 .001f ), camera_relative_depth(true ),
494- depth_write_enabled(true ), alpha_cutoff(0 .001f ), sorting_step(1 .0f ),
495- render_priority(0 ), cull_mode(CULL_DISABLED ), lighting_enabled(false ), normal_map_enabled(true ), normal_map_flip_y(true ), normal_scale(1 .0f ),
496- specular(0 .25f ), roughness(0 .65f ), metallic(0 .0f ), shadow_casting(SHADOW_CASTING_OFF ), shadow_alpha_cutoff(0 .3f ),
497- preview_skin(" Default" ), preview_animation(" -- Empty --" ), preview_frame(false ), preview_time(0 ),
498- skeleton_clipper(new spine::SkeletonClipping()), slots_dirty(true ), updating_meshes(false ), warned_multiply(false ), warned_screen(false ),
499- active_batches(0 ), active_vertices(0 ), active_indices(0 ), mesh_builds(0 ), index_uploads(0 ), vertex_uploads(0 ), tangent_uploads(0 ), attribute_uploads(0 ),
500- material_builds(0 ) {
498+ depth_write_enabled(true ), alpha_cutoff(0 .001f ), sorting_step(1 .0f ), render_priority(0 ), cull_mode(CULL_DISABLED ), lighting_enabled(false ),
499+ normal_map_enabled(true ), normal_map_flip_y(true ), normal_scale(1 .0f ), specular(0 .25f ), roughness(0 .65f ), metallic(0 .0f ),
500+ shadow_casting(SHADOW_CASTING_OFF ), shadow_alpha_cutoff(0 .3f ), preview_skin(" Default" ), preview_animation(" -- Empty --" ), preview_frame(false ),
501+ preview_time(0 ), skeleton_clipper(new spine::SkeletonClipping()), slots_dirty(true ), updating_meshes(false ), warned_multiply(false ),
502+ warned_screen(false ), active_batches(0 ), active_vertices(0 ), active_indices(0 ), mesh_builds(0 ), index_uploads(0 ), vertex_uploads(0 ),
503+ tangent_uploads(0 ), attribute_uploads(0 ), material_builds(0 ) {
501504 controller = Ref<SpineController>(memnew (SpineController));
502505 controller->set_listener (this );
503506 quad_indices.setSize (6 , 0 );
@@ -721,7 +724,7 @@ uniform float spine_metallic = 0.0;
721724 }
722725 Ref<Shader> shader (memnew (Shader));
723726 shader->set_code (String (" shader_type spatial;\n render_mode " ) + lighting_mode + depth + " , " + blend + " , " + cull + " ;\n " +
724- get_depth_shader_code () + R"(
727+ get_depth_shader_code () + R"(
725728// Read encoded atlas colors: PMA must be undone before sRGB decoding.
726729uniform sampler2D spine_texture : repeat_disable;
727730uniform bool spine_premultiplied_alpha = false;
@@ -730,7 +733,8 @@ varying vec3 spine_dark_color;
730733vec3 spine_srgb_to_linear(vec3 color) {
731734 return mix(pow((color + vec3(0.055)) / 1.055, vec3(2.4)), color / 12.92, lessThanEqual(color, vec3(0.04045)));
732735}
733- )" + lighting_declarations + R"(
736+ )" + lighting_declarations +
737+ R"(
734738void vertex() {
735739 VERTEX = spine_apply_camera_depth(VERTEX, MODEL_MATRIX[3].xyz, MODEL_NORMAL_MATRIX[2], INV_VIEW_MATRIX[3].xyz);
736740 spine_light_color = CUSTOM0;
@@ -739,7 +743,8 @@ void vertex() {
739743 spine_light_color.rgb = spine_srgb_to_linear(spine_light_color.rgb);
740744 spine_dark_color = spine_srgb_to_linear(spine_dark_color);
741745 }
742- )" + lighting_vertex + R"(
746+ )" + lighting_vertex +
747+ R"(
743748}
744749void fragment() {
745750 vec4 tex = texture(spine_texture, UV);
@@ -748,7 +753,8 @@ void fragment() {
748753 ALBEDO = tex.rgb * spine_light_color.rgb + (vec3(1.0) - tex.rgb) * spine_dark_color;
749754 ALPHA = tex.a * spine_light_color.a;
750755 spine_apply_alpha_cutoff(ALPHA);
751- )" + lighting_fragment + R"(
756+ )" + lighting_fragment +
757+ R"(
752758}
753759)" );
754760 shared = shader;
@@ -803,9 +809,9 @@ Ref<ShaderMaterial> SpineSprite3D::get_material(SpineRendererObject *renderer_ob
803809 int cull = source.is_valid () ? -1 : (int ) cull_mode;
804810 bool depth_write = source.is_null () && depth_write_enabled;
805811 for (const auto &cached : materials) {
806- if (cached.texture == texture_rid && cached.normal_texture == normal_texture_rid && cached.source == source_id && cached. blend == blend_mode &&
807- cached.pma == premultiplied_alpha && cached.lighting == generated_lighting && cached.priority == render_priority && cached. cull == cull &&
808- cached.depth_write == depth_write)
812+ if (cached.texture == texture_rid && cached.normal_texture == normal_texture_rid && cached.source == source_id &&
813+ cached.blend == blend_mode && cached.pma == premultiplied_alpha && cached.lighting == generated_lighting &&
814+ cached.priority == render_priority && cached. cull == cull && cached. depth_write == depth_write)
809815 return cached.material ;
810816 }
811817 Ref<ShaderMaterial> material;
@@ -853,8 +859,8 @@ Ref<ShaderMaterial> SpineSprite3D::get_material(SpineRendererObject *renderer_ob
853859 material->set_shader_parameter (SNAME (" spine_premultiplied_alpha" ), premultiplied_alpha);
854860
855861 apply_runtime_parameters (material);
856- materials.push_back ({texture_rid, normal_texture_rid, source_id, material, blend_mode, premultiplied_alpha, generated_lighting, render_priority, cull,
857- depth_write});
862+ materials.push_back ({texture_rid, normal_texture_rid, source_id, material, blend_mode, premultiplied_alpha, generated_lighting, render_priority,
863+ cull, depth_write});
858864 material_builds++;
859865 return material;
860866}
@@ -1040,10 +1046,10 @@ void SpineSprite3D::update_render_items(Ref<SpineSkeleton> skeleton_ref) {
10401046 }
10411047 Ref<ShaderMaterial> material = get_material (renderer_object, premultiplied_alpha, blend, override_material);
10421048 bool custom_material = override_material.is_valid ();
1043- if (!custom_material)
1044- custom_material = blend == spine::BlendMode_Additive ? additive_material.is_valid () : normal_material.is_valid ();
1049+ if (!custom_material) custom_material = blend == spine::BlendMode_Additive ? additive_material.is_valid () : normal_material.is_valid ();
10451050 Ref<ShaderMaterial> shadow_material = custom_material ? Ref<ShaderMaterial>() : get_shadow_material (renderer_object);
1046- if (!current || current->material != material || current->shadow_material != shadow_material || current->custom_material != custom_material)
1051+ if (!current || current->material != material || current->shadow_material != shadow_material ||
1052+ current->custom_material != custom_material)
10471053 current = begin_batch (material, shadow_material, custom_material);
10481054 uint32_t base_vertex = (uint32_t ) current->vertices .size ();
10491055 int vertex_count = (int ) vertices->size () / 2 ;
0 commit comments