Prep for Part 4
This commit is contained in:
parent
a198b71a26
commit
00526b9e1f
24
LICENSE.md
Normal file
24
LICENSE.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
This is free and unencumbered software released into the public domain.
|
||||||
|
|
||||||
|
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
distribute this software, either in source code form or as a compiled
|
||||||
|
binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
means.
|
||||||
|
|
||||||
|
In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
of this software dedicate any and all copyright interest in the
|
||||||
|
software to the public domain. We make this dedication for the benefit
|
||||||
|
of the public at large and to the detriment of our heirs and
|
||||||
|
successors. We intend this dedication to be an overt act of
|
||||||
|
relinquishment in perpetuity of all present and future rights to this
|
||||||
|
software under copyright law.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
For more information, please refer to <https://unlicense.org/>
|
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Geometry Grass in Godot
|
||||||
|
|
||||||
|
This respository contains the project which is developed in my "Grass Rendering Series". To access the state of the project at the start or end of a given tutorial, check out that commit.
|
||||||
|
|
||||||
|
If you want to follow along, start here: https://hexaquo.at/pages/grass-rendering-series-part-1-theory/
|
24
environment.tres
Normal file
24
environment.tres
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[gd_resource type="Environment" load_steps=3 format=3 uid="uid://c6gg4l7fynga2"]
|
||||||
|
|
||||||
|
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_3gqex"]
|
||||||
|
ground_color = Color(1, 1, 1, 1)
|
||||||
|
|
||||||
|
[sub_resource type="Sky" id="Sky_tlwt5"]
|
||||||
|
sky_material = SubResource("PhysicalSkyMaterial_3gqex")
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
background_mode = 2
|
||||||
|
background_energy_multiplier = 3.0
|
||||||
|
sky = SubResource("Sky_tlwt5")
|
||||||
|
tonemap_mode = 4
|
||||||
|
glow_enabled = true
|
||||||
|
glow_bloom = 0.1
|
||||||
|
glow_blend_mode = 1
|
||||||
|
fog_enabled = true
|
||||||
|
fog_light_color = Color(0.851974, 0.909539, 1, 1)
|
||||||
|
fog_sun_scatter = 0.15
|
||||||
|
fog_aerial_perspective = 0.93
|
||||||
|
fog_sky_affect = 0.0
|
||||||
|
adjustment_enabled = true
|
||||||
|
adjustment_contrast = 1.3
|
||||||
|
adjustment_saturation = 1.3
|
@ -30,12 +30,12 @@ void vertex() {
|
|||||||
cut_height = 1.0;
|
cut_height = 1.0;
|
||||||
|
|
||||||
// Cutting all grass on the right
|
// Cutting all grass on the right
|
||||||
if (NODE_POSITION_WORLD.x > 0.0) {
|
//if (NODE_POSITION_WORLD.x > 0.0) {
|
||||||
cut_height = 0.5;
|
//cut_height = 0.5;
|
||||||
|
//
|
||||||
VERTEX.y = min(VERTEX.y, cut_height);
|
//VERTEX.y = min(VERTEX.y, cut_height);
|
||||||
UV.y = max(UV.y, 1.0 - cut_height);
|
//UV.y = max(UV.y, 1.0 - cut_height);
|
||||||
}
|
//}
|
||||||
|
|
||||||
bottom_to_top = 1.0 - UV.y;
|
bottom_to_top = 1.0 - UV.y;
|
||||||
|
|
||||||
@ -72,6 +72,9 @@ void vertex() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
|
// Correct normals on back-faces
|
||||||
|
if (!FRONT_FACING) NORMAL = -NORMAL;
|
||||||
|
|
||||||
AO = bottom_to_top - current_wind_bend * wind_ao_affect;
|
AO = bottom_to_top - current_wind_bend * wind_ao_affect;
|
||||||
AO_LIGHT_AFFECT = cut_height;
|
AO_LIGHT_AFFECT = cut_height;
|
||||||
|
|
||||||
|
18
world.tscn
18
world.tscn
@ -1,8 +1,9 @@
|
|||||||
[gd_scene load_steps=18 format=3 uid="uid://cvcy4ye5phhn4"]
|
[gd_scene load_steps=16 format=3 uid="uid://cvcy4ye5phhn4"]
|
||||||
|
|
||||||
[ext_resource type="ArrayMesh" uid="uid://bte61gg2ejn5e" path="res://grass-stalk.obj" id="1_4cp3x"]
|
[ext_resource type="ArrayMesh" uid="uid://bte61gg2ejn5e" path="res://grass-stalk.obj" id="1_4cp3x"]
|
||||||
[ext_resource type="Shader" uid="uid://db6rwrkgyosy0" path="res://grass.gdshader" id="2_8rwdi"]
|
[ext_resource type="Shader" uid="uid://db6rwrkgyosy0" path="res://grass.gdshader" id="2_8rwdi"]
|
||||||
[ext_resource type="Script" uid="uid://bmx385ngdvuwt" path="res://grass.gd" id="3_aqk2v"]
|
[ext_resource type="Script" uid="uid://bmx385ngdvuwt" path="res://grass.gd" id="3_aqk2v"]
|
||||||
|
[ext_resource type="Environment" uid="uid://c6gg4l7fynga2" path="res://environment.tres" id="4_aqk2v"]
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_odt3n"]
|
[sub_resource type="Gradient" id="Gradient_odt3n"]
|
||||||
offsets = PackedFloat32Array(0)
|
offsets = PackedFloat32Array(0)
|
||||||
@ -61,17 +62,6 @@ buffer = PackedFloat32Array(0.703672, 0, -0.711932, 2.46375, 0, 1.001, 0, 0, 0.7
|
|||||||
|
|
||||||
[sub_resource type="SphereMesh" id="SphereMesh_tlwt5"]
|
[sub_resource type="SphereMesh" id="SphereMesh_tlwt5"]
|
||||||
|
|
||||||
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_3gqex"]
|
|
||||||
ground_color = Color(1, 1, 1, 1)
|
|
||||||
energy_multiplier = 3.0
|
|
||||||
|
|
||||||
[sub_resource type="Sky" id="Sky_a067n"]
|
|
||||||
sky_material = SubResource("PhysicalSkyMaterial_3gqex")
|
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_cjdki"]
|
|
||||||
background_mode = 2
|
|
||||||
sky = SubResource("Sky_a067n")
|
|
||||||
|
|
||||||
[node name="World" type="Node3D"]
|
[node name="World" type="Node3D"]
|
||||||
|
|
||||||
[node name="GrassChunk" type="Node3D" parent="."]
|
[node name="GrassChunk" type="Node3D" parent="."]
|
||||||
@ -92,9 +82,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
|
|||||||
mesh = SubResource("SphereMesh_tlwt5")
|
mesh = SubResource("SphereMesh_tlwt5")
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_cjdki")
|
environment = ExtResource("4_aqk2v")
|
||||||
|
|
||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"]
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"]
|
||||||
transform = Transform3D(-0.926267, -0.376806, -0.00684522, -0.363545, 0.888589, 0.279724, -0.0993189, 0.261587, -0.960056, -0.156811, 0.610055, 0)
|
transform = Transform3D(-0.926267, -0.376806, -0.00684522, -0.363545, 0.888589, 0.279724, -0.0993189, 0.261587, -0.960056, -0.156811, 0.610055, 0)
|
||||||
light_energy = 3.0
|
light_energy = 1.5
|
||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user