Static grass (Tutorial Part 2)

This commit is contained in:
karl 2025-05-25 13:35:17 +02:00
commit dd02cb971c
11 changed files with 241 additions and 0 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/

2
grass-stalk.mtl Normal file
View File

@ -0,0 +1,2 @@
# Blender 4.3.2 MTL File: 'None'
# www.blender.org

44
grass-stalk.obj Normal file
View File

@ -0,0 +1,44 @@
# Blender 4.3.2
# www.blender.org
mtllib grass-stalk.mtl
o Plane
v -0.060289 -0.000477 0.000000
v 0.065903 -0.000477 0.000000
v -0.055570 0.216852 0.000000
v -0.055570 0.216852 0.000000
v 0.061185 0.216852 0.000000
v 0.061185 0.216852 0.000000
v -0.050858 0.421288 0.000000
v 0.054760 0.421288 0.000000
v 0.054760 0.421288 0.000000
v -0.044602 0.620557 0.000000
v 0.046792 0.620557 0.000000
v -0.029974 0.817156 0.000000
v 0.028739 0.817156 0.000000
v -0.001473 1.039178 0.000000
vn 0.7730 -0.0000 0.6344
vn -0.7730 -0.0000 0.6344
vn -0.7730 -0.0001 0.6344
vn 0.6344 -0.0000 0.7730
vn -0.6344 -0.0000 0.7730
vn 0.4714 -0.0000 0.8819
vn -0.4714 -0.0000 0.8819
vn -0.0980 -0.0000 0.9952
vn 0.7730 0.0001 0.6344
vt 0.110688 0.405684
vt 0.009105 0.405684
vt 0.004573 0.209059
vt 0.116867 0.209059
vt 0.103024 0.597339
vt 0.015121 0.597339
vt 0.085661 0.786426
vt 0.029191 0.786426
vt 0.056603 0.999965
vt 0.000035 0.000035
vt 0.121405 0.000035
s 1
f 8/1/1 7/2/2 4/3/3 5/4/1
f 11/5/4 10/6/5 7/2/2 9/1/1
f 13/7/6 12/8/7 10/6/5 11/5/4
f 12/8/7 13/7/6 14/9/8
f 6/4/1 3/3/2 1/10/2 2/11/9

25
grass-stalk.obj.import Normal file
View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://bte61gg2ejn5e"
path="res://.godot/imported/grass-stalk.obj-3536da389abd67ac1abe5bd7c1c4439d.mesh"
[deps]
files=["res://.godot/imported/grass-stalk.obj-3536da389abd67ac1abe5bd7c1c4439d.mesh"]
source_file="res://grass-stalk.obj"
dest_files=["res://.godot/imported/grass-stalk.obj-3536da389abd67ac1abe5bd7c1c4439d.mesh", "res://.godot/imported/grass-stalk.obj-3536da389abd67ac1abe5bd7c1c4439d.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

38
grass.gdshader Normal file
View File

@ -0,0 +1,38 @@
shader_type spatial;
render_mode cull_disabled;
uniform float size_small = 0.2;
uniform float size_large = 0.6;
uniform float blade_bend = 0.5;
uniform vec3 color_small: source_color = vec3(0.3, 0.6, 0.1);
uniform vec3 color_large: source_color = vec3(0.9, 0.9, 0.2);
uniform sampler2D patch_noise;
uniform float patch_scale = 5.0;
varying float patch_factor;
varying float bottom_to_top;
void vertex() {
bottom_to_top = 1.0 - UV.y;
VERTEX.z += blade_bend * pow(bottom_to_top, 2.0);
patch_factor = texture(patch_noise, NODE_POSITION_WORLD.xz / patch_scale).r;
VERTEX *= mix(size_small, size_large, patch_factor);
NORMAL = mix(NORMAL, vec3(0.0, 1.0, 0.0), bottom_to_top);
}
void fragment() {
AO = bottom_to_top;
AO_LIGHT_AFFECT = 1.0;
ALBEDO = mix(color_small, color_large, patch_factor);
BACKLIGHT = vec3(0.2);
ROUGHNESS = 0.4;
SPECULAR = 0.2;
}

1
grass.gdshader.uid Normal file
View File

@ -0,0 +1 @@
uid://db6rwrkgyosy0

1
icon.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 994 B

37
icon.svg.import Normal file
View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dulgjocs1upx8"
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/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
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

15
project.godot Normal file
View File

@ -0,0 +1,15 @@
; 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="Grass Tutorial"
config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.svg"

73
world.tscn Normal file

File diff suppressed because one or more lines are too long