[gd_scene load_steps=79 format=4 uid="uid://bi4sydudfwap6"]

[ext_resource type="Script" uid="uid://bo0awqfi5eqg4" path="res://addons/rokojori_action_library/Runtime/Procedural/Assets/Grass/GrassPatch.cs" id="1_ajxn3"]
[ext_resource type="Texture2D" uid="uid://bs16srd4audv6" path="res://Example Grass/Sky.jpg" id="1_wf46h"]
[ext_resource type="Texture2D" uid="uid://d26yo7jsrxtws" path="res://addons/rokojori_action_library/Assets/Procedural/Grass/grass-albedo.jpg" id="2_dssmp"]
[ext_resource type="Shader" uid="uid://c5kcgjfq2328r" path="res://addons/rokojori_action_library/Runtime/Procedural/Assets/Grass/Windy Grass Shader.gdshader" id="2_ukfl2"]
[ext_resource type="Texture2D" uid="uid://b4qprmwr2fmno" path="res://addons/rokojori_action_library/Assets/Procedural/Grass/grass-orm.jpg" id="3_mykiy"]
[ext_resource type="Texture2D" uid="uid://bq7d1ml585fxg" path="res://addons/rokojori_action_library/Assets/Procedural/Grass/grass-normal.jpg" id="4_6coud"]
[ext_resource type="Script" uid="uid://b1sjdhnriaeg6" path="res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/FoliageRenderer.cs" id="5_pne4w"]
[ext_resource type="Script" uid="uid://c5ia5ogtg1725" path="res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/MeshInstanceFoliageData.cs" id="6_ukfl2"]
[ext_resource type="Texture2D" uid="uid://c30nul6romace" path="res://addons/rokojori_action_library/Runtime/Procedural/Noise/RGB 3D Noise.png" id="7_q33fm"]
[ext_resource type="Script" uid="uid://c4hg6rvrmjm6j" path="res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/GPUFoliageShaderMaterial.cs" id="8_3k1et"]
[ext_resource type="Script" uid="uid://bdcpb8ug5evdx" path="res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/FoliageQualitySettings.cs" id="9_n7e3p"]
[ext_resource type="Shader" uid="uid://brk5g221ccd2x" path="res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/GPUFoliageShader.gdshader" id="9_wf46h"]
[ext_resource type="Script" uid="uid://cl36x2jgfuypo" path="res://addons/rokojori_action_library/Runtime/Actions/OnProcess.cs" id="11_3k1et"]
[ext_resource type="Script" uid="uid://bdjcmayust2t0" path="res://addons/rokojori_action_library/Runtime/Procedural/Assets/Grass/UpdateGrassPatch.cs" id="12_wf46h"]

[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_n7e3p"]
panorama = ExtResource("1_wf46h")

[sub_resource type="Sky" id="Sky_lvhug"]
sky_material = SubResource("PanoramaSkyMaterial_n7e3p")

[sub_resource type="Environment" id="Environment_6u5q2"]
background_mode = 2
sky = SubResource("Sky_lvhug")
ambient_light_source = 2
ambient_light_color = Color(0.859799, 0.855739, 0.820059, 1)
tonemap_mode = 2
tonemap_exposure = 1.2
ssao_enabled = true
ssao_radius = 0.5
ssao_intensity = 3.0
ssao_light_affect = 1.0
ssao_ao_channel_affect = 1.0
glow_enabled = true
fog_enabled = true
fog_light_color = Color(0.618456, 0.742401, 0.839433, 1)
fog_sun_scatter = 1.0
fog_density = 0.003
fog_aerial_perspective = 1.0
fog_sky_affect = 0.0

[sub_resource type="FastNoiseLite" id="FastNoiseLite_n7e3p"]
frequency = 0.0055
fractal_lacunarity = 6.0
fractal_gain = 0.5815
domain_warp_enabled = true
domain_warp_frequency = 0.2485

[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_lvhug"]
width = 2048
height = 2048
seamless = true
seamless_blend_skirt = 0.115
as_normal_map = true
bump_strength = 16.0
noise = SubResource("FastNoiseLite_n7e3p")

[sub_resource type="Gradient" id="Gradient_n7e3p"]
offsets = PackedFloat32Array(0.0490798, 0.190184, 0.392638)
colors = PackedColorArray(0.262397, 0.262397, 0.262397, 1, 0.683294, 0.683294, 0.683294, 1, 1, 1, 1, 1)

[sub_resource type="FastNoiseLite" id="FastNoiseLite_lvhug"]
frequency = 0.0089
fractal_gain = 0.948

[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_6u5q2"]
seamless = true
color_ramp = SubResource("Gradient_n7e3p")
noise = SubResource("FastNoiseLite_lvhug")

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6u5q2"]
albedo_color = Color(0.35, 0.286533, 0.238, 1)
roughness_texture = SubResource("NoiseTexture2D_6u5q2")
normal_enabled = true
normal_texture = SubResource("NoiseTexture2D_lvhug")
ao_enabled = true
ao_light_affect = 1.0
uv1_scale = Vector3(200, 200, 200)

[sub_resource type="FastNoiseLite" id="FastNoiseLite_q33fm"]
frequency = 0.006

[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_3k1et"]
seamless = true
noise = SubResource("FastNoiseLite_q33fm")

[sub_resource type="ShaderMaterial" id="ShaderMaterial_wf46h"]
render_priority = 0
shader = ExtResource("2_ukfl2")
shader_parameter/albedo = Color(1, 1, 1, 1)
shader_parameter/hslVariation = Vector4(0, 0, 0, 0)
shader_parameter/hslVariationUVScale = 1.0
shader_parameter/hslVariationUVOffset = Vector2(0, 0)
shader_parameter/texture_albedo = ExtResource("2_dssmp")
shader_parameter/albedoToBacklight = 0.51
shader_parameter/backlight = Color(0.387841, 0.432113, 0.213215, 1)
shader_parameter/roughness = 0.553
shader_parameter/texture_metallic = ExtResource("3_mykiy")
shader_parameter/metallic_texture_channel = Vector4(0, 0, 1, 0)
shader_parameter/texture_roughness = ExtResource("3_mykiy")
shader_parameter/specular = 0.0
shader_parameter/metallic = 0.07
shader_parameter/texture_normal = ExtResource("4_6coud")
shader_parameter/normal_scale = 1.0
shader_parameter/texture_ambient_occlusion = ExtResource("3_mykiy")
shader_parameter/ao_texture_channel = Vector4(1, 0, 0, 0)
shader_parameter/ao_light_affect = 1.0
shader_parameter/uv1_scale = Vector3(1, 1, 0)
shader_parameter/uv1_offset = Vector3(0, 0, 0)
shader_parameter/windEnabled = true
shader_parameter/windStrength = 0.133
shader_parameter/windSpeed = Vector2(0.118, 0.1)
shader_parameter/windScale = 0.1
shader_parameter/windNoise = SubResource("NoiseTexture2D_3k1et")
shader_parameter/windNoiseAngleOffset = Vector2(0, 0)
shader_parameter/windNoiseStrengthOffset = Vector2(0.2, 0)
shader_parameter/windStart = 0.067
shader_parameter/windEnd = 0.467
shader_parameter/windWeightCurve = 0.015
shader_parameter/windHeightCompensation = 0.655

[sub_resource type="Curve" id="Curve_q33fm"]
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_3k1et"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(1, 1), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_6u5q2"]
_data = [Vector2(0, 0.206717), 0.0, 0.258278, 0, 1, Vector2(1, 0.464995), 0.258278, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_n7e3p"]
_limits = [0.0, 0.1, 0.0, 1.0]
_data = [Vector2(0, 0.05), 0.0, 0.0, 0, 1, Vector2(1, 0.05), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_lvhug"]
_limits = [0.0, 0.1, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 0.0515602, 0, 1, Vector2(0.265403, 0.0136842), 0.0, 0.0, 0, 0, Vector2(1, 0.00722782), -0.00878903, 0.0, 1, 0]
point_count = 3

[sub_resource type="Curve" id="Curve_704lb"]
_limits = [-0.2, 0.2, 0.0, 1.0]
_data = [Vector2(0, -0.0287606), 0.0, 0.0830464, 0, 1, Vector2(0.325815, -0.00170293), 0.0, 0.0, 0, 0, Vector2(1, -0.0231579), -0.0318235, 0.0, 1, 0]
point_count = 3

[sub_resource type="Curve" id="Curve_3k2ek"]
_data = [Vector2(0, 0), 0.0, 0.126774, 0, 0, Vector2(1, 0.17597), 0.126774, 0.0, 0, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_uh2yf"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 1, Vector2(1, 0), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_jsf0k"]
_data = [Vector2(0, 0.231579), 0.0, 0.178947, 0, 1, Vector2(1, 0.410526), 0.178947, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_enf7l"]
_data = [Vector2(0, 0.05), 0.0, 0.0, 0, 1, Vector2(1, 0.05), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_otfpa"]
_data = [Vector2(0, 0.05), 0.0, 0.0, 0, 1, Vector2(1, 0.05), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_6yg0j"]
_limits = [0.0, 2.0, 0.0, 1.0]
_data = [Vector2(0, 0.671713), 0.0, 0.267277, 0, 0, Vector2(1, 1.65563), 0.983917, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_51g00"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(0.491228, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -1.96552, 0.0, 1, 0]
point_count = 3

[sub_resource type="Curve" id="Curve_w6lq2"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(0.501253, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -2.00503, 0.0, 1, 0]
point_count = 3

[sub_resource type="Curve" id="Curve_7dtm4"]
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_0em6d"]
_limits = [0.0, 360.0, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 52.28, 0, 1, Vector2(1, 52.28), 52.28, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_jd0ku"]
_data = [Vector2(0, 0), 0.0, 0.0283823, 0, 1, Vector2(1, 0.0283823), 0.0283823, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_8f5gl"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(1, 1), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_dmgk3"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(1, 1), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_1q7ky"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(1, 1), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_gesqt"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 1, Vector2(1, 1), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_n08xs"]
_data = [Vector2(0, 0.274361), 0.0, 0.354411, 0, 1, Vector2(1, 0.628772), 0.354411, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_ln3hi"]
_data = [Vector2(0, 0.520341), 0.0, 0.479659, 0, 1, Vector2(1, 1), 0.479659, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_ymoou"]
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_mcpgn"]
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="ArrayMesh" id="ArrayMesh_3k2ek"]
_surfaces = [{
"aabb": AABB(-0.771678, -0.0765572, -0.7877, 1.6639, 0.802085, 1.66393),
"attribute_data": PackedByteArray("[encoded data, 16664 characters]"),
"format": 34359742487,
"index_count": 3486,
"index_data": PackedByteArray("[encoded data, 9296 characters]"),
"material": SubResource("ShaderMaterial_wf46h"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 1562,
"vertex_data": PackedByteArray("[encoded data, 41656 characters]")
}]

[sub_resource type="Gradient" id="Gradient_wf46h"]
offsets = PackedFloat32Array(0, 0.532847, 1)
colors = PackedColorArray(0.554309, 0.430117, 0.357354, 1, 0.595041, 0.52199, 0.411006, 1, 0.690082, 0.66806, 0.571958, 1)

[sub_resource type="GradientTexture2D" id="GradientTexture2D_n7e3p"]
gradient = SubResource("Gradient_wf46h")
fill_from = Vector2(0, 1)

[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_lvhug"]
load_path = "res://.godot/imported/grass-orm.jpg-0da9dd33ebe9b3b72e1ac21ca0be3736.s3tc.ctex"

[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_6u5q2"]
load_path = "res://.godot/imported/grass-orm.jpg-0da9dd33ebe9b3b72e1ac21ca0be3736.s3tc.ctex"

[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_3k2ek"]
load_path = "res://.godot/imported/grass-normal.jpg-2d4a9ea6bbeb99b39b6c18477ee229ae.s3tc.ctex"

[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_uh2yf"]
load_path = "res://.godot/imported/grass-orm.jpg-0da9dd33ebe9b3b72e1ac21ca0be3736.s3tc.ctex"

[sub_resource type="FastNoiseLite" id="FastNoiseLite_jsf0k"]
frequency = 0.006

[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_enf7l"]
seamless = true
noise = SubResource("FastNoiseLite_jsf0k")

[sub_resource type="ShaderMaterial" id="ShaderMaterial_otfpa"]
render_priority = 0
shader = ExtResource("2_ukfl2")
shader_parameter/albedo = Color(0.927686, 0.893358, 0.860404, 1)
shader_parameter/hslVariation = Vector4(0, 0, 0, 0)
shader_parameter/hslVariationUVScale = 1.0
shader_parameter/hslVariationUVOffset = Vector2(0, 0)
shader_parameter/texture_albedo = SubResource("GradientTexture2D_n7e3p")
shader_parameter/albedoToBacklight = 0.497
shader_parameter/backlight = Color(0.574675, 0.428785, 0.0303412, 1)
shader_parameter/roughness = 1.0
shader_parameter/texture_metallic = SubResource("CompressedTexture2D_6u5q2")
shader_parameter/metallic_texture_channel = Vector4(0, 0, 1, 0)
shader_parameter/texture_roughness = SubResource("CompressedTexture2D_uh2yf")
shader_parameter/specular = 0.03
shader_parameter/metallic = 0.0
shader_parameter/texture_normal = SubResource("CompressedTexture2D_3k2ek")
shader_parameter/normal_scale = 1.0
shader_parameter/texture_ambient_occlusion = SubResource("CompressedTexture2D_lvhug")
shader_parameter/ao_texture_channel = Vector4(1, 0, 0, 0)
shader_parameter/ao_light_affect = 1.0
shader_parameter/uv1_scale = Vector3(1, 1, 0)
shader_parameter/uv1_offset = Vector3(0, 0, 0)
shader_parameter/windEnabled = true
shader_parameter/windStrength = 0.3
shader_parameter/windSpeed = Vector2(0.118, 0.1)
shader_parameter/windScale = 0.1
shader_parameter/windNoise = SubResource("NoiseTexture2D_enf7l")
shader_parameter/windNoiseAngleOffset = Vector2(0, 0)
shader_parameter/windNoiseStrengthOffset = Vector2(0.2, 0)
shader_parameter/windStart = 0.0485
shader_parameter/windEnd = 0.3285
shader_parameter/windWeightCurve = 0.0
shader_parameter/windHeightCompensation = 0.0

[sub_resource type="Curve" id="Curve_wf46h"]
_data = [Vector2(0, 0.0837276), 0.0, 0.147587, 0, 1, Vector2(1, 0.231315), 0.147587, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_d4jqn"]
_limits = [0.0, 0.5, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 0.0227458, 0, 1, Vector2(0.488722, 0.0111164), 0.0, 0.0, 0, 0, Vector2(1, 0), -0.0217423, 0.0, 1, 0]
point_count = 3

[sub_resource type="Curve" id="Curve_un2t3"]
_limits = [-0.2, 0.2, 0.0, 1.0]
_data = [Vector2(0, -0.00662252), 0.0, 0.117775, 0, 0, Vector2(1, -0.00416273), 0.00245979, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_vv6ef"]
_data = [Vector2(0, 0.0736842), 0.0, 0.0631579, 0, 1, Vector2(1, 0.136842), 0.0631579, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_wk1x4"]
_data = [Vector2(0, 0.05), 0.0, 0.0, 0, 1, Vector2(1, 0.05), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_j4imf"]
_data = [Vector2(0, 0.05), 0.0, 0.0, 0, 1, Vector2(1, 0.05), 0.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_xl1jd"]
_data = [Vector2(0, 0.298959), 0.0, 0.267277, 0, 0, Vector2(1, 0.747871), 0.448912, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_8t2rj"]
_limits = [0.0, 360.0, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
point_count = 2

[sub_resource type="Curve" id="Curve_tput7"]
_data = [Vector2(0, 0.274361), 0.0, 0.354411, 0, 1, Vector2(1, 0.628772), 0.354411, 0.0, 1, 0]
point_count = 2

[sub_resource type="ArrayMesh" id="ArrayMesh_rkenn"]
_surfaces = [{
"aabb": AABB(-0.165846, -0.0500193, -0.173221, 0.388694, 0.194157, 0.43977),
"attribute_data": PackedByteArray("[encoded data, 16384 characters]"),
"format": 34359742487,
"index_count": 3840,
"index_data": PackedByteArray("[encoded data, 10240 characters]"),
"material": SubResource("ShaderMaterial_otfpa"),
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 1536,
"vertex_data": PackedByteArray("[encoded data, 40960 characters]")
}]

[sub_resource type="Resource" id="Resource_8t2rj"]
script = ExtResource("6_ukfl2")
meshInstanceReference = NodePath("../GrassPatch/MeshInstance3D")
cellSize = 0.8475
visibilityRange = 40.0
visibilityFadeRelative = 0.72
visibilityFadeAbsolute = 0.0
visibilityFadeHidingOffset = -0.5322
renderPriority = 0
qualitySettings = []
layerName = ""
positionVarianceMaxOffset = Vector3(3, 0, 3)
positionVarianceScale = 0.2135
positionVarianceOffset = Vector2(0, 0)
rotationMin = Vector3(-0.2, 0, -0.2)
rotationMax = Vector3(0.2, 1, 0.2)
rotationVarianceScale = 1.4055
rotationVarianceOffset = Vector2(0, 0)
scaleVarianceMinScale = Vector3(0.2, 0.166, 0.2)
scaleVarianceMaxScale = Vector3(1.5, 2.2405, 1.5)
scaleVarianceScale = 0.126
scaleVarianceOffset = Vector2(0, 0)
occupancyVarianceAmount = 1.0
occupancyVariancePower = 25.223
occupancyTreshold = 0.4695
occupancyHideOffset = -0.047
occupancyHideScale = 0.135
occupancyVarianceScale = 0.7285
occupancyVarianceOffset = Vector2(0, 0)
metadata/_custom_type_script = "uid://c5ia5ogtg1725"

[sub_resource type="Resource" id="Resource_0em6d"]
script = ExtResource("6_ukfl2")
meshInstanceReference = NodePath("../GrassPatch2/Grass Patch")
cellSize = 0.548
visibilityRange = 5.0
visibilityFadeRelative = 0.5
visibilityFadeAbsolute = 0.0
visibilityFadeHidingOffset = -0.023
renderPriority = 0
qualitySettings = []
layerName = ""
positionVarianceMaxOffset = Vector3(10, 0, 10)
positionVarianceScale = 3.0
positionVarianceOffset = Vector2(0, 0)
rotationMin = Vector3(0, 0, 0)
rotationMax = Vector3(0, 1, 0)
rotationVarianceScale = 1.0
rotationVarianceOffset = Vector2(0, 0)
scaleVarianceMinScale = Vector3(0.2, 0.2, 0.2)
scaleVarianceMaxScale = Vector3(2, 2, 2)
scaleVarianceScale = 1.0
scaleVarianceOffset = Vector2(0, 0)
occupancyVarianceAmount = 0.0
occupancyVariancePower = 11.0596
occupancyTreshold = 0.3286
occupancyHideOffset = -0.025
occupancyHideScale = 0.044
occupancyVarianceScale = 1.0
occupancyVarianceOffset = Vector2(0, 0)
metadata/_custom_type_script = "uid://c5ia5ogtg1725"

[sub_resource type="Resource" id="Resource_lvhug"]
script = ExtResource("9_n7e3p")
qualityLevel = 0.0
cellSizeMultiply = 1.452
visibilityRangeMultiply = 0.5225
metadata/_custom_type_script = "uid://bdcpb8ug5evdx"

[sub_resource type="Resource" id="Resource_6u5q2"]
script = ExtResource("9_n7e3p")
qualityLevel = 100.0
cellSizeMultiply = 1.0
visibilityRangeMultiply = 1.0
metadata/_custom_type_script = "uid://bdcpb8ug5evdx"

[sub_resource type="Resource" id="Resource_3k2ek"]
script = ExtResource("9_n7e3p")
qualityLevel = 200.0
cellSizeMultiply = 0.77
visibilityRangeMultiply = 1.6195
metadata/_custom_type_script = "uid://bdcpb8ug5evdx"

[sub_resource type="ShaderMaterial" id="ShaderMaterial_uh2yf"]
shader = ExtResource("9_wf46h")
shader_parameter/cameraPosition = Vector3(45.0788, 3.24521, 3.59066)
shader_parameter/yaw = 0.0
shader_parameter/cellSize = 0.652575
shader_parameter/width = 200
shader_parameter/height = 200
shader_parameter/positionVariance = ExtResource("7_q33fm")
shader_parameter/maxPositionOffset = Vector3(3, 0, 3)
shader_parameter/positionUVScale = Vector2(0.2135, 0.2135)
shader_parameter/positionUVOffset = Vector2(0, 0)
shader_parameter/heightOffset = 0.0
shader_parameter/rotationVariance = ExtResource("7_q33fm")
shader_parameter/minRotation = Vector3(-0.2, 0, -0.2)
shader_parameter/maxRotation = Vector3(0.2, 1, 0.2)
shader_parameter/rotationUVScale = Vector2(1.4055, 1.4055)
shader_parameter/rotationUVOffset = Vector2(0, 0)
shader_parameter/scaleVariance = ExtResource("7_q33fm")
shader_parameter/minScale = Vector3(0.2, 0.166, 0.2)
shader_parameter/maxScale = Vector3(1.5, 2.2405, 1.5)
shader_parameter/scaleUVScale = Vector2(0.126, 0.126)
shader_parameter/scaleUVOffset = Vector2(0, 0)
shader_parameter/occupancyAmount = 1.0
shader_parameter/occupancyPower = 25.223
shader_parameter/occupancyTreshold = 0.4695
shader_parameter/occupancyHideOffset = -0.047
shader_parameter/occupancyHideScale = 0.135
shader_parameter/occupancyVariance = ExtResource("7_q33fm")
shader_parameter/occupancyUVScale = Vector2(0.7285, 0.7285)
shader_parameter/occupancyUVOffset = Vector2(0, 0)
shader_parameter/hideStart = 18.1384
shader_parameter/hideMax = 64.78
shader_parameter/hideOffset = -0.5322
shader_parameter/mapSize = Vector2(1024, 1024)
shader_parameter/mapCenter = Vector2(0, 0)
script = ExtResource("8_3k1et")

[sub_resource type="ShaderMaterial" id="ShaderMaterial_jsf0k"]
shader = ExtResource("9_wf46h")
shader_parameter/cameraPosition = Vector3(45.0788, 3.24521, 3.59066)
shader_parameter/yaw = 0.0
shader_parameter/cellSize = 0.42196
shader_parameter/width = 40
shader_parameter/height = 40
shader_parameter/positionVariance = ExtResource("7_q33fm")
shader_parameter/maxPositionOffset = Vector3(10, 0, 10)
shader_parameter/positionUVScale = Vector2(3, 3)
shader_parameter/positionUVOffset = Vector2(0, 0)
shader_parameter/heightOffset = 0.0
shader_parameter/rotationVariance = ExtResource("7_q33fm")
shader_parameter/minRotation = Vector3(0, 0, 0)
shader_parameter/maxRotation = Vector3(0, 1, 0)
shader_parameter/rotationUVScale = Vector2(1, 1)
shader_parameter/rotationUVOffset = Vector2(0, 0)
shader_parameter/scaleVariance = ExtResource("7_q33fm")
shader_parameter/minScale = Vector3(0.2, 0.2, 0.2)
shader_parameter/maxScale = Vector3(2, 2, 2)
shader_parameter/scaleUVScale = Vector2(1, 1)
shader_parameter/scaleUVOffset = Vector2(0, 0)
shader_parameter/occupancyAmount = 0.0
shader_parameter/occupancyPower = 11.0596
shader_parameter/occupancyTreshold = 0.3286
shader_parameter/occupancyHideOffset = -0.025
shader_parameter/occupancyHideScale = 0.044
shader_parameter/occupancyVariance = ExtResource("7_q33fm")
shader_parameter/occupancyUVScale = Vector2(1, 1)
shader_parameter/occupancyUVOffset = Vector2(0, 0)
shader_parameter/hideStart = 4.04875
shader_parameter/hideMax = 8.0975
shader_parameter/hideOffset = -0.023
shader_parameter/mapSize = Vector2(1024, 1024)
shader_parameter/mapCenter = Vector2(0, 0)
script = ExtResource("8_3k1et")

[node name="Example Grass" type="Node3D"]

[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_6u5q2")

[node name="Ground" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
size = Vector3(2000, 1, 2000)
material = SubResource("StandardMaterial3D_6u5q2")

[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.932324, 0.246165, -0.264906, 0, 0.732543, 0.680721, 0.361625, -0.634652, 0.682967, 0, 0.904587, 0)
light_color = Color(0.927686, 0.882655, 0.774991, 1)

[node name="GrassPatch" type="Node3D" parent="." node_paths=PackedStringArray("output")]
script = ExtResource("1_ajxn3")
output = NodePath("MeshInstance3D")
seed = 1234
material = SubResource("ShaderMaterial_wf46h")
patchSize = 1.0
blades = 10
X_numBlades = 100
X_numTriangles = 1162
bladeSegmentMapping = SubResource("Curve_q33fm")
uvSegmentColumns = 10
uvSegmentWeightsClose = SubResource("Curve_3k1et")
bladeHeight = SubResource("Curve_6u5q2")
bladeInGround = SubResource("Curve_n7e3p")
bladeWidth = SubResource("Curve_lvhug")
bladeBending = SubResource("Curve_704lb")
bladeTwisting = SubResource("Curve_3k2ek")
rolling = SubResource("Curve_uh2yf")
positionJitter = SubResource("Curve_jsf0k")
positionJitterX = SubResource("Curve_enf7l")
positionJitterZ = SubResource("Curve_otfpa")
bladeScale = SubResource("Curve_6yg0j")
scaleByDistanceX = SubResource("Curve_51g00")
scaleByDistanceZ = SubResource("Curve_w6lq2")
yawRotation = SubResource("Curve_7dtm4")
randomRotation = SubResource("Curve_0em6d")
vertexTurbulenceAmount = SubResource("Curve_jd0ku")
vertexTurbulenceScale = SubResource("Curve_8f5gl")
vertexTurbulenceScaleX = SubResource("Curve_dmgk3")
vertexTurbulenceScaleY = SubResource("Curve_1q7ky")
vertexTurbulenceScaleZ = SubResource("Curve_gesqt")
normalBlending = SubResource("Curve_n08xs")
normalBlendingAmountOverY = SubResource("Curve_ln3hi")
lowCurve = SubResource("Curve_ymoou")
highCurve = SubResource("Curve_mcpgn")
metadata/_custom_type_script = "uid://bo0awqfi5eqg4"

[node name="MeshInstance3D" type="MeshInstance3D" parent="GrassPatch"]
visible = false
mesh = SubResource("ArrayMesh_3k2ek")

[node name="GrassPatch2" type="Node3D" parent="." node_paths=PackedStringArray("output")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.22401)
script = ExtResource("1_ajxn3")
output = NodePath("Grass Patch")
seed = 1234
material = SubResource("ShaderMaterial_otfpa")
patchSize = 0.2335
blades = 8
X_numBlades = 64
bladeSegments = 6
X_numTriangles = 1280
bladeSegmentMapping = SubResource("Curve_q33fm")
uvSegmentColumns = 10
uvSegmentWeightsClose = SubResource("Curve_3k1et")
bladeHeight = SubResource("Curve_wf46h")
bladeInGround = SubResource("Curve_n7e3p")
bladeWidth = SubResource("Curve_d4jqn")
bladeBending = SubResource("Curve_un2t3")
rolling = SubResource("Curve_uh2yf")
positionJitter = SubResource("Curve_vv6ef")
positionJitterX = SubResource("Curve_wk1x4")
positionJitterZ = SubResource("Curve_j4imf")
bladeScale = SubResource("Curve_xl1jd")
scaleByDistanceX = SubResource("Curve_51g00")
scaleByDistanceZ = SubResource("Curve_w6lq2")
yawRotation = SubResource("Curve_7dtm4")
randomRotation = SubResource("Curve_8t2rj")
vertexTurbulenceAmount = null
vertexTurbulenceScale = null
vertexTurbulenceScaleX = null
vertexTurbulenceScaleY = null
vertexTurbulenceScaleZ = null
normalBlending = SubResource("Curve_tput7")
normalBlendingAmountOverY = SubResource("Curve_ln3hi")
lowCurve = SubResource("Curve_ymoou")
highCurve = SubResource("Curve_mcpgn")
metadata/_custom_type_script = "uid://bo0awqfi5eqg4"

[node name="Grass Patch" type="MeshInstance3D" parent="GrassPatch2"]
visible = false
mesh = SubResource("ArrayMesh_rkenn")

[node name="FoliageRenderer" type="Node3D" parent="."]
script = ExtResource("5_pne4w")
foliage = [SubResource("Resource_8t2rj"), SubResource("Resource_0em6d")]
quality = 200.0
qualitySettingsAll = [SubResource("Resource_lvhug"), SubResource("Resource_6u5q2"), SubResource("Resource_3k2ek")]
updateLayers = false
noise = ExtResource("7_q33fm")
metadata/_custom_type_script = "uid://b1sjdhnriaeg6"

[node name="GpuParticles3D" type="GPUParticles3D" parent="FoliageRenderer"]
custom_aabb = AABB(-5000, -5000, -5000, 10000, 10000, 10000)
amount = 40000
lifetime = 0.01
explosiveness = 1.0
fixed_fps = 0
interpolate = false
fract_delta = false
process_material = SubResource("ShaderMaterial_uh2yf")
draw_pass_1 = SubResource("ArrayMesh_3k2ek")

[node name="GpuParticles3D2" type="GPUParticles3D" parent="FoliageRenderer"]
custom_aabb = AABB(-5000, -5000, -5000, 10000, 10000, 10000)
amount = 1600
lifetime = 0.01
explosiveness = 1.0
fixed_fps = 0
interpolate = false
fract_delta = false
process_material = SubResource("ShaderMaterial_jsf0k")
draw_pass_1 = SubResource("ArrayMesh_rkenn")

[node name="OnProcess" type="Node" parent="."]
script = ExtResource("11_3k1et")
metadata/_custom_type_script = "uid://cl36x2jgfuypo"

[node name="UpdateGrassPatch" type="Node" parent="OnProcess" node_paths=PackedStringArray("grassPatch")]
script = ExtResource("12_wf46h")
grassPatch = NodePath("../../GrassPatch2")
metadata/_custom_type_script = "uid://bdjcmayust2t0"
