Skip to content

Commit 5ccaeef

Browse files
Apply suggestions from code review
Co-authored-by: A Thousand Ships <[email protected]>
1 parent e967b85 commit 5ccaeef

File tree

2 files changed

+43
-23
lines changed

2 files changed

+43
-23
lines changed

rendering/mesh_texture_rd/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Rasterize Mesh Texture
22

3-
This is a demo showing how to setup a basic render pipeline to draw mesh to texture using RenderingDevice.
3+
This is a demo showing how to set up a basic render pipeline to draw mesh to texture using RenderingDevice.
44

55
Language: GDScript
66

rendering/mesh_texture_rd/mesh_texture_rd.gd

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ var is_2d_mesh := false
3333
size = value
3434
_queue_update_pipeline()
3535

36+
3637
@export var clear_color := Color.TRANSPARENT:
3738
get: return clear_color
3839
set(value):
@@ -42,18 +43,22 @@ var is_2d_mesh := false
4243
@export var mesh: Mesh:
4344
get: return mesh
4445
set(value):
45-
if mesh != null: mesh.changed.disconnect(_queue_update_mesh)
46+
if mesh != null:
47+
mesh.changed.disconnect(_queue_update_mesh)
4648
mesh = value
4749
_queue_update_mesh()
48-
if mesh != null: mesh.changed.connect(_queue_update_mesh)
50+
if mesh != null:
51+
mesh.changed.connect(_queue_update_mesh)
4952

5053
@export var base_texture: Texture2D:
5154
get: return base_texture
5255
set(value):
53-
if (base_texture != null): base_texture.changed.disconnect(_queue_update_uniform_set)
56+
if base_texture != null:
57+
base_texture.changed.disconnect(_queue_update_uniform_set)
5458
base_texture = value
5559
_queue_update_uniform_set()
56-
if (base_texture != null): base_texture.changed.connect(_queue_update_uniform_set)
60+
if base_texture != null:
61+
base_texture.changed.connect(_queue_update_uniform_set)
5762

5863

5964
@export var projection: Projection = Projection.IDENTITY:
@@ -65,10 +70,12 @@ var is_2d_mesh := false
6570
@export var glsl_file: RDShaderFile = preload("res://base_texture.glsl"):
6671
get: return glsl_file
6772
set(value):
68-
if (glsl_file != null): glsl_file.changed.disconnect(_queue_update_shader)
73+
if glsl_file != null:
74+
glsl_file.changed.disconnect(_queue_update_shader)
6975
glsl_file = value
7076
_queue_update_shader()
71-
if (glsl_file != null): glsl_file.changed.connect(_queue_update_shader)
77+
if glsl_file != null:
78+
glsl_file.changed.connect(_queue_update_shader)
7279

7380
var _update_queued := false
7481

@@ -93,14 +100,21 @@ func _init() -> void:
93100
glsl_file.changed.connect(_queue_update_shader)
94101
_queue_update_shader()
95102

103+
96104
func _notification(what: int) -> void:
97105
if what == NOTIFICATION_PREDELETE:
98-
if framebuffer_texture_rid.is_valid(): rd.free_rid(framebuffer_texture_rid)
99-
if shader_rid.is_valid(): rd.free_rid(shader_rid)
100-
if sampler_rid.is_valid(): rd.free_rid(sampler_rid)
101-
if index_buffer_rid.is_valid(): rd.free_rid(index_buffer_rid)
102-
if vertex_buffer_pos_rid.is_valid(): rd.free_rid(vertex_buffer_pos_rid)
103-
if vertex_buffer_uv_rid.is_valid(): rd.free_rid(vertex_buffer_uv_rid)
106+
if framebuffer_texture_rid.is_valid():
107+
rd.free_rid(framebuffer_texture_rid)
108+
if shader_rid.is_valid():
109+
rd.free_rid(shader_rid)
110+
if sampler_rid.is_valid():
111+
rd.free_rid(sampler_rid)
112+
if index_buffer_rid.is_valid():
113+
rd.free_rid(index_buffer_rid)
114+
if vertex_buffer_pos_rid.is_valid():
115+
rd.free_rid(vertex_buffer_pos_rid)
116+
if vertex_buffer_uv_rid.is_valid():
117+
rd.free_rid(vertex_buffer_uv_rid)
104118
RenderingServer.free_rid(texture_rd)
105119

106120
func update(force: bool = false) -> void:
@@ -157,6 +171,7 @@ func _queue_update_mesh() -> void:
157171
func _reset_vertex() -> void:
158172
if mesh == null or mesh.get_surface_count() == 0:
159173
return
174+
160175
var surface_array := mesh.surface_get_arrays(0)
161176
var vertex_array: Variant = surface_array[Mesh.ARRAY_VERTEX]
162177
var indices: PackedInt32Array = surface_array[Mesh.ARRAY_INDEX]
@@ -170,14 +185,16 @@ func _reset_vertex() -> void:
170185
var v: Vector2 = vertex_array[i]
171186
# 2D Mesh needs to be downscaled to be visible in normal projection.
172187
vertex_array_vec3[i] = Vector3(v.x, v.y, 0) / 100
188+
173189
vertex_array = vertex_array_vec3
174190

175191
var points_bytes: PackedByteArray = vertex_array.to_byte_array()
176192

177193
if indices.size() > 0:
178194
var indices_bytes := indices.to_byte_array()
179195

180-
if index_buffer_rid.is_valid(): rd.free_rid(index_buffer_rid)
196+
if index_buffer_rid.is_valid():
197+
rd.free_rid(index_buffer_rid)
181198
index_buffer_rid = rd.index_buffer_create(indices.size(), RenderingDevice.INDEX_BUFFER_FORMAT_UINT32, indices_bytes)
182199

183200
index_array_rid = rd.index_array_create(index_buffer_rid, 0, indices.size())
@@ -199,11 +216,13 @@ func _reset_shader() -> void:
199216
rd.free_rid(shader_rid)
200217
pipeline_rid = RID()
201218
uniform_set_rid = RID()
219+
202220
shader_rid = rd.shader_create_from_spirv(shader_spirv)
203221

204222
func _reset_pipeline() -> void:
205223
if glsl_file == null:
206224
return
225+
207226
var tex_format := RDTextureFormat.new()
208227
var tex_view := RDTextureView.new()
209228
tex_format.texture_type = RenderingDevice.TEXTURE_TYPE_2D
@@ -219,6 +238,7 @@ func _reset_pipeline() -> void:
219238
RenderingServer.texture_replace(texture_rd, RenderingServer.texture_rd_create(tex_rid) if tex_rid.is_valid() else RenderingServer.texture_2d_placeholder_create())
220239
if framebuffer_texture_rid.is_valid():
221240
rd.free_rid(framebuffer_texture_rid)
241+
222242
framebuffer_texture_rid = tex_rid
223243

224244
var blend := RDPipelineColorBlendState.new()
@@ -231,15 +251,15 @@ func _reset_pipeline() -> void:
231251
rs.cull_mode = RenderingDevice.POLYGON_CULL_DISABLED
232252

233253
pipeline_rid = rd.render_pipeline_create(
234-
shader_rid,
235-
rd.framebuffer_get_format(framebuffer_rid),
236-
vertex_format,
237-
RenderingDevice.RENDER_PRIMITIVE_TRIANGLES,
238-
rs,
239-
RDPipelineMultisampleState.new(),
240-
RDPipelineDepthStencilState.new(),
241-
blend
242-
)
254+
shader_rid,
255+
rd.framebuffer_get_format(framebuffer_rid),
256+
vertex_format,
257+
RenderingDevice.RENDER_PRIMITIVE_TRIANGLES,
258+
rs,
259+
RDPipelineMultisampleState.new(),
260+
RDPipelineDepthStencilState.new(),
261+
blend
262+
)
243263

244264
func _reset_uniform() -> void:
245265
if not sampler_rid.is_valid() or base_texture == null or not base_texture.get_rid().is_valid() or not shader_rid.is_valid():

0 commit comments

Comments
 (0)