Fixed renddering and 2D preview problems.

This commit is contained in:
Rodz Labs 2024-03-15 22:18:55 +01:00
parent f6da6a54cc
commit 27cb6cd6a4
3 changed files with 9 additions and 6 deletions

View File

@ -72,7 +72,7 @@ func buffer_clear_dependencies(buffer_name : String):
assert(dep_index != -1)
if dependencies[d].size() == 1:
dependencies.erase(d)
if dependencies_values.has(d) and ! (dependencies_values[d] is Texture2D):
if dependencies_values.has(d) and ! (dependencies_values[d] is MMTexture):
dependencies_values.erase(d)
else:
dependencies[d].remove_at(dep_index)
@ -221,12 +221,12 @@ func buffer_create_compute_material(buffer_name : String, material : MMShaderBas
for p in material.get_parameters().keys():
var value = buffer_add_dependency(buffer_name, p)
if value != null:
material.set_parameter(p, value)
await material.set_parameter(p, value)
buffers[buffer_name].shader_generations += 1
func buffer_create_shader_material(buffer_name : String, material : MMShaderBase, shader : String):
material.set_shader(shader)
buffer_create_compute_material(buffer_name, material)
await buffer_create_compute_material(buffer_name, material)
func print_stats(object = null):
var statuses : Dictionary = {}

View File

@ -117,7 +117,7 @@ func request_rendering_device(user) -> RenderingDevice:
rendering_device_user = user
var scene_tree : SceneTree = get_tree()
if scene_tree:
await get_tree().process_frame
await scene_tree.process_frame
return rendering_device
func release_rendering_device(user) -> void:

View File

@ -46,10 +46,13 @@ func do_update_material(source, target_material : ShaderMaterial, template):
is_greyscale = source.output_type == "f"
# Update shader
var code = generate_preview_shader(source, template)
mm_deps.buffer_create_shader_material("preview_"+str(get_instance_id()), MMShaderMaterial.new(target_material), code)
await mm_deps.buffer_create_shader_material("preview_"+str(get_instance_id()), MMShaderMaterial.new(target_material), code)
for u in source.uniforms:
if u.value:
target_material.set_shader_parameter(u.name, u.value)
if u.value is MMTexture:
target_material.set_shader_parameter(u.name, u.value.get_texture())
else:
target_material.set_shader_parameter(u.name, u.value)
# Make sure position/size parameters are setup
on_resized()