From 85ca2fb2a16adbcfb865184d6124940f96845078 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 3 Jan 2023 00:16:59 +0100 Subject: [PATCH] Add a compute shader demo (#810) Co-authored-by: dzil123 <5725958+dzil123@users.noreply.github.com> Co-authored-by: Hugo Locurcio Co-authored-by: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> --- misc/compute_shader_heightmap/README.md | 34 +++ .../compute_shader.glsl | 61 ++++ .../compute_shader.glsl.import | 14 + misc/compute_shader_heightmap/icon.svg | 1 + misc/compute_shader_heightmap/icon.svg.import | 37 +++ misc/compute_shader_heightmap/main.gd | 260 ++++++++++++++++++ misc/compute_shader_heightmap/main.tscn | 158 +++++++++++ misc/compute_shader_heightmap/project.godot | 26 ++ .../screenshots/.gdignore | 0 .../screenshots/compute_shader_heightmap.webp | Bin 0 -> 97554 bytes 10 files changed, 591 insertions(+) create mode 100644 misc/compute_shader_heightmap/README.md create mode 100644 misc/compute_shader_heightmap/compute_shader.glsl create mode 100644 misc/compute_shader_heightmap/compute_shader.glsl.import create mode 100644 misc/compute_shader_heightmap/icon.svg create mode 100644 misc/compute_shader_heightmap/icon.svg.import create mode 100644 misc/compute_shader_heightmap/main.gd create mode 100644 misc/compute_shader_heightmap/main.tscn create mode 100644 misc/compute_shader_heightmap/project.godot create mode 100644 misc/compute_shader_heightmap/screenshots/.gdignore create mode 100644 misc/compute_shader_heightmap/screenshots/compute_shader_heightmap.webp diff --git a/misc/compute_shader_heightmap/README.md b/misc/compute_shader_heightmap/README.md new file mode 100644 index 00000000..4f2c587e --- /dev/null +++ b/misc/compute_shader_heightmap/README.md @@ -0,0 +1,34 @@ +# Compute Shader Heightmap + +This demo project gives an example of how to use *compute shaders* in Godot. +A compute shader is a piece of code that runs on the GPU and is written in GLSL +(as opposed to the +[Godot shader language](https://docs.godotengine.org/en/latest/tutorials/shaders/shader_reference/index.html)). + +A compute shader can be used to take advantage of the GPU's ability to perform +massively parallel operations faster than a CPU. This demo can generate the +heightmap of an island from a noise texture, both on the CPU and the GPU. You +can try both options to compare the time it takes to generate the heightmap on +the CPU and GPU respectively. + +For smaller noise textures, the CPU will often be faster, but the larger the +gains are by using the GPU. On a PC with a NVIDIA GeForce RTX 3060 and +11th-generation Intel Core i7 processor, the compute shader was tested to be +faster for textures 1024×1024 and larger. + +The dimensions of the image can be set on the exported **Dimensions** property +on the main scene. By default, it's set to 2048, which creates a 2048×2048 +heightmap. + +> **Note** +> +> The shader code has been structured to be followed step-by-step by the user, +> and may not necessarily represent best practices. The CPU code is also less +> optimized than it could be. This is to reflect the GPU code as much as +> possible. Besides the use of the GPU, no multithreading is used. + +Languages: GDScript, GLSL + +Renderer: Forward Mobile + +![Compute Shader Heightmap](screenshots/compute_shader_heightmap.webp) diff --git a/misc/compute_shader_heightmap/compute_shader.glsl b/misc/compute_shader_heightmap/compute_shader.glsl new file mode 100644 index 00000000..8a38b95e --- /dev/null +++ b/misc/compute_shader_heightmap/compute_shader.glsl @@ -0,0 +1,61 @@ +#[compute] +#version 460 + +// Instruct the GPU to use 8x8x1 = 64 local invocations per workgroup. +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +// Prepare memory for the image, which will be both read and written to +// `restrict` is used to tell the compiler that the memory will only be accessed +// by the `heightmap` variable. +layout(r8, binding = 0) restrict uniform image2D heightmap; +// `readonly` is used to tell the compiler that we will not write to this memory. +// This allows the compiler to make some optimizations it couldn't otherwise. +layout(rgba8, binding = 1) restrict readonly uniform image2D gradient; + +// This function is the GPU counterpart of `compute_island_cpu()` in `main.gd`. +void main() { + // Grab the current pixel's position from the ID of this specific invocation ("thread"). + ivec2 coords = ivec2(gl_GlobalInvocationID.xy); + ivec2 dimensions = imageSize(heightmap); + // Calculate the center of the image. + // Because we are working with integers ('round numbers') here, + // the result will be floored to an integer. + ivec2 center = dimensions / 2; + // Calculate the smallest distance from center to edge. + int smallest_radius = min(center.x, center.y); + + // Calculate the distance from the center of the image to the current pixel. + float dist = distance(coords, center); + // Retrieve the range of the gradient image. + int gradient_max_x = imageSize(gradient).x - 1; + // Calculate the gradient index based on the distance from the center. + // `mix()` functions similarly to `lerp()` in GDScript. + int gradient_x = int(mix(0.0, float(gradient_max_x), dist / float(smallest_radius))); + + // Retrieve the gradient value at the calculated position. + ivec2 gradient_pos = ivec2(gradient_x, 0); + vec4 gradient_color = imageLoad(gradient, gradient_pos); + + // Even though the image format only has the red channel, + // this will still return a vec4: `vec4(red, 0.0, 0.0, 1.0)` + vec4 pixel = imageLoad(heightmap, coords); + + // Multiply the pixel's red channel by the gradient's red channel + // (or any RGB channel, they're all the same except for alpha). + pixel.r *= gradient_color.r; + // If the pixel is below a certain threshold, this sets it to 0.0. + // The `step()` function is like `clamp()`, but it returns 0.0 if the value is + // below the threshold, or 1.0 if it is above. + // + // This is why we multiply it by the pixel's value again: to get the original + // value back if it is above the threshold. This shorthand replaces an `if` + // statement, which would cause branching and thus potentially slow down the + // shader. + pixel.r = step(0.2, pixel.r) * pixel.r; + + // Store the pixel back into the image. + // WARNING: make sure you are writing to the same coordinate that you read from. + // If you don't, you may end up writing to a pixel, before that pixel is read + // by a different invocation and cause errors. + imageStore(heightmap, coords, pixel); +} diff --git a/misc/compute_shader_heightmap/compute_shader.glsl.import b/misc/compute_shader_heightmap/compute_shader.glsl.import new file mode 100644 index 00000000..64e0cfba --- /dev/null +++ b/misc/compute_shader_heightmap/compute_shader.glsl.import @@ -0,0 +1,14 @@ +[remap] + +importer="glsl" +type="RDShaderFile" +uid="uid://cgowuwlmmweew" +path="res://.godot/imported/compute_shader.glsl-0816de56a4f9dce0934d88a29a0758cf.res" + +[deps] + +source_file="res://compute_shader.glsl" +dest_files=["res://.godot/imported/compute_shader.glsl-0816de56a4f9dce0934d88a29a0758cf.res"] + +[params] + diff --git a/misc/compute_shader_heightmap/icon.svg b/misc/compute_shader_heightmap/icon.svg new file mode 100644 index 00000000..adc26df6 --- /dev/null +++ b/misc/compute_shader_heightmap/icon.svg @@ -0,0 +1 @@ + diff --git a/misc/compute_shader_heightmap/icon.svg.import b/misc/compute_shader_heightmap/icon.svg.import new file mode 100644 index 00000000..e97b2d13 --- /dev/null +++ b/misc/compute_shader_heightmap/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://651nx11bd2yf" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/misc/compute_shader_heightmap/main.gd b/misc/compute_shader_heightmap/main.gd new file mode 100644 index 00000000..20fd7ecb --- /dev/null +++ b/misc/compute_shader_heightmap/main.gd @@ -0,0 +1,260 @@ +extends Control + +@export_file("*.glsl") var shader_file +@export_range(128, 4096, 1, "exp") var dimension: int = 512 + +@onready var seed_input: SpinBox = $CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/GridContainer/SeedInput +@onready var heightmap_rect: TextureRect = $CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer/RawHeightmap +@onready var island_rect: TextureRect = $CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer/ComputedHeightmap + +var noise: FastNoiseLite +var gradient: Gradient +var gradient_tex: GradientTexture1D + +var po2_dimensions: int +var start_time: int + +var rd: RenderingDevice +var shader_rid: RID +var heightmap_rid: RID +var gradient_rid: RID +var uniform_set: RID +var pipeline: RID + +func _init() -> void: + # Create a noise function as the basis for our heightmap. + noise = FastNoiseLite.new() + noise.noise_type = FastNoiseLite.TYPE_SIMPLEX_SMOOTH + noise.fractal_octaves = 5 + noise.fractal_lacunarity = 1.9 + + # Create a gradient to function as overlay. + gradient = Gradient.new() + gradient.add_point(0.6, Color(0.9, 0.9, 0.9, 1.0)) + gradient.add_point(0.8, Color(1.0, 1.0, 1.0, 1.0)) + # The gradient will start black, transition to grey in the first 70%, then to white in the last 30%. + gradient.reverse() + + # Create a 1D texture (single row of pixels) from gradient. + gradient_tex = GradientTexture1D.new() + gradient_tex.gradient = gradient + + +func _ready() -> void: + randomize_seed() + po2_dimensions = nearest_po2(dimension) + + noise.frequency = 0.003 / (float(po2_dimensions) / 512.0) + + # Append GPU and CPU model names to make performance comparison more informed. + # On unbalanced configurations where the CPU is much stronger than the GPU, + # compute shaders may not be beneficial. + $CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer/CreateButtonGPU.text += "\n" + RenderingServer.get_video_adapter_name() + $CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer/CreateButtonCPU.text += "\n" + OS.get_processor_name() + + +func _notification(what): + # Object destructor, triggered before the engine deletes this Node. + if what == NOTIFICATION_PREDELETE: + cleanup_gpu() + + +# Generate a random integer, convert it to a string and set it as text for the TextEdit field. +func randomize_seed() -> void: + seed_input.value = randi() + + +func prepare_image() -> Image: + start_time = Time.get_ticks_usec() + # Use the to_int() method on the String to convert to a valid seed. + noise.seed = seed_input.value + # Create image from noise. + var heightmap := noise.get_image(po2_dimensions, po2_dimensions, false, false) + + # Create ImageTexture to display original on screen. + var clone = Image.new() + clone.copy_from(heightmap) + clone.resize(512, 512, Image.INTERPOLATE_NEAREST) + var clone_tex := ImageTexture.create_from_image(clone) + heightmap_rect.texture = clone_tex + + return heightmap + + +func init_gpu() -> void: + # These resources are expensive to make, so create them once and cache for subsequent runs. + + # Create a local rendering device (required to run compute shaders). + rd = RenderingServer.create_local_rendering_device() + + if rd == null: + OS.alert("""Couldn't create local RenderingDevice on GPU: %s + +Note: RenderingDevice is only available in the Forward Plus and Forward Mobile backends, not Compatibility.""" % RenderingServer.get_video_adapter_name()) + return + + # Prepare the shader. + shader_rid = load_shader(rd, shader_file) + + # Create format for heightmap. + var heightmap_format := RDTextureFormat.new() + # There are a lot of different formats. It might take some studying to be able to be able to + # choose the right ones. In this case, we tell it to interpret the data as a single byte for red. + # Even though the noise image only has a luminance channel, we can just interpret this as if it + # was the red channel. The byte layout is the same! + heightmap_format.format = RenderingDevice.DATA_FORMAT_R8_UNORM + heightmap_format.width = po2_dimensions + heightmap_format.height = po2_dimensions + # The TextureUsageBits are stored as 'bit fields', denoting what can be done with the data. + # Because of how bit fields work, we can just sum the required ones: 8 + 64 + 128 + heightmap_format.usage_bits = \ + RenderingDevice.TEXTURE_USAGE_STORAGE_BIT + \ + RenderingDevice.TEXTURE_USAGE_CAN_UPDATE_BIT + \ + RenderingDevice.TEXTURE_USAGE_CAN_COPY_FROM_BIT + + # Prepare heightmap texture. We will set the data later. + heightmap_rid = rd.texture_create(heightmap_format, RDTextureView.new()) + + # Create uniform for heightmap. + var heightmap_uniform := RDUniform.new() + heightmap_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + heightmap_uniform.binding = 0 # This matches the binding in the shader. + heightmap_uniform.add_id(heightmap_rid) + + # Create format for the gradient. + var gradient_format := RDTextureFormat.new() + # The gradient could have been converted to a single channel like we did with the heightmap, + # but for illustrative purposes, we use four channels (RGBA). + gradient_format.format = RenderingDevice.DATA_FORMAT_R8G8B8A8_UNORM + gradient_format.width = gradient_tex.width # Default: 256 + # GradientTexture1D always has a height of 1. + gradient_format.height = 1 + gradient_format.usage_bits = \ + RenderingDevice.TEXTURE_USAGE_STORAGE_BIT + \ + RenderingDevice.TEXTURE_USAGE_CAN_UPDATE_BIT + + # Storage gradient as texture. + gradient_rid = rd.texture_create(gradient_format, RDTextureView.new(), [gradient_tex.get_image().get_data()]) + + # Create uniform for gradient. + var gradient_uniform := RDUniform.new() + gradient_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + gradient_uniform.binding = 1 # This matches the binding in the shader. + gradient_uniform.add_id(gradient_rid) + + uniform_set = rd.uniform_set_create([heightmap_uniform, gradient_uniform], shader_rid, 0) + + pipeline = rd.compute_pipeline_create(shader_rid) + + +func compute_island_gpu(heightmap: Image) -> void: + if rd == null: + init_gpu() + + if rd == null: + $CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer2/Label2.text = \ + "RenderingDevice is not available on the current rendering driver" + return + + # Store heightmap as texture. + rd.texture_update(heightmap_rid, 0, heightmap.get_data()) + + var compute_list := rd.compute_list_begin() + rd.compute_list_bind_compute_pipeline(compute_list, pipeline) + rd.compute_list_bind_uniform_set(compute_list, uniform_set, 0) + # This is where the magic happens! As our shader has a work group size of 8x8x1, we dispatch + # one for every 8x8 block of pixels here. This ratio is highly tunable, and performance may vary. + rd.compute_list_dispatch(compute_list, po2_dimensions / 8, po2_dimensions / 8, 1) + rd.compute_list_end() + + rd.submit() + # Wait for the GPU to finish. + # Normally, you would do this after a few frames have passed so the compute shader can run in the background. + rd.sync() + + # Retrieve processed data. + var output_bytes := rd.texture_get_data(heightmap_rid, 0) + # Even though the GPU was working on the image as if each byte represented the red channel, + # we'll interpret the data as if it was the luminance channel. + var island_img := Image.create_from_data(po2_dimensions, po2_dimensions, false, Image.FORMAT_L8, output_bytes) + + display_island(island_img) + + +func cleanup_gpu() -> void: + if rd == null: + return + + # All resources must be freed after use to avoid memory leaks. + + rd.free_rid(pipeline) + pipeline = RID() + + rd.free_rid(uniform_set) + uniform_set = RID() + + rd.free_rid(gradient_rid) + gradient_rid = RID() + + rd.free_rid(heightmap_rid) + heightmap_rid = RID() + + rd.free_rid(shader_rid) + shader_rid = RID() + + rd.free() + rd = null + + +# Import, compile and load shader, return reference. +func load_shader(rd: RenderingDevice, path: String) -> RID: + var shader_file_data: RDShaderFile = load(path) + var shader_spirv: RDShaderSPIRV = shader_file_data.get_spirv() + return rd.shader_create_from_spirv(shader_spirv) + + +func compute_island_cpu(heightmap: Image) -> void: + # This function is the CPU counterpart of the `main()` function in `compute_shader.glsl`. + var center := Vector2i(po2_dimensions, po2_dimensions) / 2 + # Loop over all pixel coordinates in the image. + for y in range(0, po2_dimensions): + for x in range(0, po2_dimensions): + var coord := Vector2i(x, y) + var pixel := heightmap.get_pixelv(coord) + # Calculate the distance between the coord and the center. + var distance := Vector2(center).distance_to(Vector2(coord)) + # As the X and Y dimensions are the same, we can use center.x as a proxy for the distance + # from the center to an edge. + var gradient_color := gradient.sample(distance / float(center.x)) + # We use the v ('value') of the pixel here. This is not the same as the luminance we use + # in the compute shader, but close enough for our purposes here. + pixel.v *= gradient_color.v + if pixel.v < 0.2: + pixel.v = 0.0 + heightmap.set_pixelv(coord, pixel) + display_island(heightmap) + + +func display_island(island: Image) -> void: + # Create ImageTexture to display original on screen. + var island_tex := ImageTexture.create_from_image(island) + island_rect.texture = island_tex + + # Calculate and display elapsed time. + var stop_time := Time.get_ticks_usec() + var elapsed := stop_time - start_time + $CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer/Label2.text = "%s ms" % str(elapsed * 0.001).pad_decimals(1) + + +func _on_random_button_pressed() -> void: + randomize_seed() + + +func _on_create_button_gpu_pressed() -> void: + var heightmap = prepare_image() + call_deferred("compute_island_gpu", heightmap) + + +func _on_create_button_cpu_pressed() -> void: + var heightmap = prepare_image() + call_deferred("compute_island_cpu", heightmap) diff --git a/misc/compute_shader_heightmap/main.tscn b/misc/compute_shader_heightmap/main.tscn new file mode 100644 index 00000000..36e29f6a --- /dev/null +++ b/misc/compute_shader_heightmap/main.tscn @@ -0,0 +1,158 @@ +[gd_scene load_steps=4 format=3 uid="uid://dm8doenormt4l"] + +[ext_resource type="Script" path="res://main.gd" id="1_r4h6n"] + +[sub_resource type="Gradient" id="Gradient_l3ffd"] +colors = PackedColorArray(0, 0.686275, 0.658824, 1, 0.542081, 0.741499, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_uwj8q"] +gradient = SubResource("Gradient_l3ffd") +fill_to = Vector2(1, 1) + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_r4h6n") +shader_file = "res://compute_shader.glsl" + +[node name="Background" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_uwj8q") + +[node name="CenterContainer" type="CenterContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer/VBoxContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/VBoxContainer/PanelContainer"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="TitleLabel" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Create Island" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="HSeparator" type="HSeparator" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="GridContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="SeedLabel" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_vertical = 1 +text = "Seed" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="SeedInput" type="SpinBox" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(140, 35) +layout_mode = 2 +max_value = 1e+12 + +[node name="RandomButton" type="Button" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Random" + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="CreateButtonGPU" type="Button" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(0, 54) +layout_mode = 2 +size_flags_horizontal = 3 +text = "Create (GPU)" + +[node name="CreateButtonCPU" type="Button" parent="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(0, 54) +layout_mode = 2 +size_flags_horizontal = 3 +text = "Create (CPU)" + +[node name="PanelContainer2" type="PanelContainer" parent="CenterContainer/VBoxContainer"] +custom_minimum_size = Vector2(1034, 0) +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/VBoxContainer/PanelContainer2"] +layout_mode = 2 + +[node name="GridContainer" type="GridContainer" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer"] +layout_mode = 2 +theme_override_constants/v_separation = 10 +columns = 2 + +[node name="Label" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +text = "Raw Heightmap" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="Label2" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +text = "Computed Island" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="RawHeightmap" type="TextureRect" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(384, 384) +layout_mode = 2 +size_flags_horizontal = 3 +ignore_texture_size = true +stretch_mode = 5 + +[node name="ComputedHeightmap" type="TextureRect" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(384, 384) +layout_mode = 2 +size_flags_horizontal = 3 +ignore_texture_size = true +stretch_mode = 5 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Time elapsed: " +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="CenterContainer/VBoxContainer/PanelContainer2/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(0, 40) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(1, 0.941176, 0.47451, 1) +theme_override_font_sizes/font_size = 24 +text = "... ms" + +[connection signal="pressed" from="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/GridContainer/RandomButton" to="." method="_on_random_button_pressed"] +[connection signal="pressed" from="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer/CreateButtonGPU" to="." method="_on_create_button_gpu_pressed"] +[connection signal="pressed" from="CenterContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer/CreateButtonCPU" to="." method="_on_create_button_cpu_pressed"] diff --git a/misc/compute_shader_heightmap/project.godot b/misc/compute_shader_heightmap/project.godot new file mode 100644 index 00000000..a78330da --- /dev/null +++ b/misc/compute_shader_heightmap/project.godot @@ -0,0 +1,26 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Compute Shader Heightmap" +run/main_scene="res://main.tscn" +config/features=PackedStringArray("4.0") +run/low_processor_mode=true +config/icon="res://icon.svg" + +[display] + +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[rendering] + +renderer/rendering_method="mobile" diff --git a/misc/compute_shader_heightmap/screenshots/.gdignore b/misc/compute_shader_heightmap/screenshots/.gdignore new file mode 100644 index 00000000..e69de29b diff --git a/misc/compute_shader_heightmap/screenshots/compute_shader_heightmap.webp b/misc/compute_shader_heightmap/screenshots/compute_shader_heightmap.webp new file mode 100644 index 0000000000000000000000000000000000000000..a250c9bd6292344f30bfe27996c54c876f017120 GIT binary patch literal 97554 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 literal 0 HcmV?d00001