තණකොළ - වතුර - අහස
දැන් අපේ walking sim එක ගොඩක් දුරට ඉවරයි, ඒත් අපිට ඒක තවත් ලස්සන කරන්න පුලුවන්.
ඒ වගේම Godot වල තවත් වැදගත් දේවල් ටිකක් ගැනත් කියන්න තියෙනවා. addons, shaders වගේ දේවල්.
තණකොළ, වතුර, අහස හදන ගමන් මම ඒවා පැහැදිලි කරන්නම්.
තණකොළ, වතුර දාන්න කලින්, renderer එක නම් 'Forward+' කරන්න වෙනවා. එහෙම නැත්නම් shaders හරියට වැඩ කරන එකක් නෑ.
කලින් ඉදන්ම 'Forward+' නෙවෙයි නම් තිබුණෙ, 'Forward+' select කරන්න. ඊළගට 'Restart Project' click කරන්න.
තණකොළ
අපි දැන් මේ හිස් පොළව තණකොළ වලින් පුරවමු. දැන් ඔයාගෙ scene එක පේනවා ඇත්තේ මේ විදියට:
-47e6458b8238e3f2468b6fea656658b9.png)
තණකොළ දාන්න, අපිට ඕන වෙනවා addon එකක්.
AssetLib tab එකට මරු වුනාම මේ විදියට තමයි පේන්නෙ.
(මේ වැඩේට internet ඕන)
-755e87ca286ada8fbb6698e0dcef7159.png)
“grass” කියලා search කරාම මෙන්න මේ addon එක පෙන්නාවි.
-b6eeb294444fbe7814288a6d8b309806.png)
ඒ addon එක උඩ click කරලා, Download click කරන්න.
-ffabc603070ba3064428b4c55a6955fb.png)
download වෙන්න වැඩි වෙලාවක් යන එකක් නෑ.
-4eaab454a176f7f6c1bc320ae8093b0d.png)
ඊළගට Install click කරන්න. වෙන මුකුත් settings වෙනස් කරන්න එපා.
-abf163a182f494f36f9f73beeebf43e6.png)
installation එකට පස්සෙ, message එකක් ඒවි හරියට install වුණා කියලා.
FileSystem panel එකේ addons කියලා අලුත් folder එකක් හැදිලා තියෙනවා බලාගන්න පුලුවන්.
Ok click කරල ආයෙ 3D view එකට යන්න.
-c667e8d2191ccce986b2a5d424cf5249.png)
මේකට යන්න: Project → Project Settings → Plugins.
අපි install කරපු plugin එක එතන ඇති, ඒත් තාම enabled කරලා නෑ.
-d485554522a83bbc4e98818227812c95.png)
Plugin එක enable කරලා window එක close කරන්න.
-8fadab3afb1653a89b52ee32ae752285.png)
Demo node එක select කරලා Ctrl + A ඔබන්න.
grass කියලා search කරන්න, SimpleGrassTextured node එක හම්බුවේවි.
Create click කරන්න.
-7063c6f855ac3a1b6a240640d27fe061.png)
Viewport එකේ brush එකක් බලාගන්න පුලුවන්. මේකෙන් ඇදලා තණකොළ paint කරන්න පුලුවන්.
-2d0749a5ac56fd908c620654d6dc878f.png)
Bracket keys [] වලින් brush radius එක අඩු වැඩි කරන්න පුලුවන්.
-c471753dee54535e11daa6ca0b28acf7.png)
-
- keys වලින් density එක (තණකොළ වල ඝනත්වය) අඩු වැඩි කරන්න පුලුවන්.
-bb65122c44d5fa7435f54d3ecb7d8e8c.png)
- keys වලින් density එක (තණකොළ වල ඝනත්වය) අඩු වැඩි කරන්න පුලුවන්.
Radius එකයි density එකයි ගැලපෙන විදියට වෙනස් කරගෙන, ඔයාට පුලුවන් පොළවට තණකොළ paint කරන්න.
WASD keys වලින් viewport එකේ move වෙන්න පුලුවන්.
Viewport movement practice වෙන්නත් එක්ක මේක හොද task එකක්.
-6c1447dc47ae26ce0183c38c8a0e3108.png)
Erase tool එකෙන් තණකොළ අයින් කරන්න පුලුවන්. Shortcut එක X.
-0ca9f41905dc5f8de442993a37809d38.png)
D key එක ඔබලා පුලුවන් airbrush mode එකට ආයෙත් එන්න.
ගැලපෙන brush size පාවිච්චි කරලා වැඩේ ඉක්මනට කරගන්න.
-f567021ac7ef4504727633cd4e518e22.png)
Erase tool එකෙන් තණකොළ අයින් කරලා පුලුවන් පොඩි පාරවල් වගේ ඒවා හදාගන්න.
-49c870b251be4ba27d92aa50f5ec0df9.png)
වෙන node එකක් උඩ click කරලා grass painting mode එකෙන් අයින් වෙන්න පුලුවන්.
-360e3c6529a47fae25ab1db10947e112.png)
දැන් ඔයාට තියෙනවා පොඩි wind animation එකක් එක්ක ලස්සන තණකොළ ටිකක්.
තණකොළ දාන වැඩෙන් ඔයා ඉගෙන ගත්තා කොහොමද addon එකක් පාවිච්චි කරලා ඔයාගෙ වැඩ ලේසියෙන් කරගන්නෙ කියලා. මොකද අපි තණකොළ ගහෙන් ගහ හිටෙව්වේ නෑ, addon එක තමයි වැඩේ ලේසි කරේ.
-ef2c326c81187611b07b65521811e0b2.png)
Brush size: [ ]
Density: + -
Paint mode: D
Erase mode: X
Viewport movement: Right-click + W A S D
Fast movement: move වෙන ගමන් Shift ඔබාගෙන ඉන්න
Godot වල තියෙන හැකියාවන් වැඩිදියුණු කරන්න හදපු අමතර tools වර්ගයක් තමයි මේ addon කියන්නෙ. හැම දෙයක්ම 0 ඉදන් හදන්නෙ නැතුව, මේවා පාවිච්චි කරලා අපිට පුලුවන් අපේ වැඩ ඉක්මනට, ලේසියෙන් කරගන්න.
වතුර
වතුර හදන්න කලින්; player, map එක, තණකොළ ටික hide කරලා ඉන්න.
-9758779a8047b65e42bb74e413cc90a0.png)
MeshInstance3D node එකක් create කරලා ඒකට QuadMesh එකක් assign කරන්න.
-6241c07f4b9dfcbb2dbc1339b6f1b870.png)
මේ විදියෙ එකක් ඒවි. ඒක Water කියලා rename කරන්න.
-27e4f46c8b1c2e7b664e72652768cf80.png)
QuadMesh උඩ click කරලා ඒකෙ sub-properties open කරගන්න.
-0aff4eca2f2632133132f6aa99631966.png)
Orientation එක face Y කියලා වෙනස් කරන්න.
-e647aa81f83017953fc3759defcaf66a.png)
Size එක 500 x 500 වලට ලොකු කරගන්න.
-617bfeea2e04c1a3ac08111200d1059b.png)
ඊළගට, ඒකෙ Material property එකට ShaderMaterial එකක් add කරන්න.
-57961d864fd87ae04c383ba381e3d833.png)
ආයෙත් ShaderMaterial එක උඩ click කරලා ඒකෙ sub-properties open කරගන්න.
-57e76ee77f77ed869cc841ead28a9bd1.png)
Create a new shader click කරන්න.
-ac8a45a05d8a5024939d811b3f93f17d.png)
හැම දෙයක්ම තියෙන විදියටම තියාගෙන, folder icon එක click කරන්න.
-3b80dd5fb092421143628449cf71d1d8.png)
Scripts folder එක තෝරලා ඒකෙ නම water විදියට වෙනස් කරන්න. Open ඔබන්න.
-d7612b02920ac6acc245a70ad946fd78.png)
Create ඔබන්න.
-0eab95f1c73edd54b0e436bd920b568b.png)
ඊළගට, water.gdshader එක උඩ click කරන්න. Shader editor එක යටින් open වෙනවා බලාගන්න පුලුවන් වෙයි.
-5559f3d9dc27cd231852e1489bb9ca6e.png)
දැනට තියෙන code එක අයින් කරලා, මෙන්න මේ පහළ තියෙන එක දාගන්න.
Code credits: Toon Water Shader
shader_type spatial;
render_mode unshaded;
uniform float slide_speed = 0.3;
uniform float wobble_speed = 1.0;
uniform float wobble_intensity = 0.4;
uniform float texture_scale = 0.2;
uniform sampler2D water : repeat_enable;
uniform sampler2D depth_texture : source_color, hint_depth_texture;
varying vec2 sample_choord;
void vertex() {
VERTEX.y += sin(TIME * wobble_speed + (VERTEX.x + VERTEX.z) * 0.3) * 0.2;
sample_choord = VERTEX.xz;
}
void fragment() {
vec3 color1 = vec3(1,1,1);
vec3 color2 = texture(
water,
vec2(
(sample_choord.x + sin(TIME * wobble_speed) * wobble_intensity + TIME * slide_speed) * texture_scale,
(sample_choord.y + cos(TIME * wobble_speed * 0.5) * wobble_intensity) * texture_scale
)
).rgb;
float depth = texture(depth_texture, SCREEN_UV).x;
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth);
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
view.xyz /= view.w;
float linear_depth = -view.z;
float object_depth = FRAGCOORD.z;
vec3 object_ndc = vec3(SCREEN_UV * 2.0 - 1.0, object_depth);
vec4 object_view = INV_PROJECTION_MATRIX * vec4(object_ndc, 1.0);
object_view.xyz /= object_view.w;
float linear_object_depth = -object_view.z;
ALBEDO = mix(color1, color2, smoothstep(0.0, 4.0, linear_depth - linear_object_depth)) * 0.5; // Darken by 20%
}
Paste කරාට පස්සෙ, ඔයාට පේනවා ඇති පොඩි animation එකක්.
-651de514f51fc8f5225fe97226b00d4e.png)
Shader Parameters යටතේ, water texture එකක් assign කරන්න ඕන.
-0cfb7de169760483db4596bae42b7184.png)
මම මේකට පාවිච්චි කරන්නෙ මෙන්න මේ water texture එක: 
Download link: Y2K Water Texture
Texture එක download කරලා, ඔයාගෙ assets folder එකට දාගන්න.
-c64b6a59b3d3747a758f8d8335889a99.png)
Water shader slot එකට ඒක drag & drop කරන්න. දැන් පේනවා ඇති stylish water mesh එකක්.
-ffb3685bb4bc54526edb797aba481fe8.png)
Hide කරපු player, map එක, තණකොළ ආයෙත් visible කරන්න. වතුර වල Y position value එක 2.5ට වෙනස් කරන්න. දැන් වතුර තියෙනවා!
-499a8c675ea7796423f9e8ce7a63f402.png)
Shader එකක් කියන්නෙ object එකක පෙනුම මොන විදියද කියලා පාලනය කරන පොඩි program එකක්. ඒකෙන් පුලුවන් object එකක පාට, textures, lighting වල වෙනස්කම් කරන්න. ඒ වගේම වතුර, ගින්දර වගේ visual effects හදන්න.
අහස
ඊළගට තියෙන්නෙ අහසෙ වැඩ.
WorldEnvironment node එක උඩ click කරන්න. ඊළගට Inspector එකේ, Environment කියන property එක click කරන්න, ඊළගට Sky click කරන්න.
-f160a1c1a9b402af32799fb810dae325.png)
දැනට ඒකෙ තියෙන්නෙ procedural sky එකක්.
අපි ඒකට දාන්න යන්නෙ Panorama Sky එකක්. Panorama Sky select කරන්න.
-381069c3823fe279d83b81018aea97cd.png)
ඊළගට මෙන්න මේ වගේ කලුවර වෙයි:
-6e98c3b8146e9eb27a15a7de63dc0e5a.png)
Panorama Sky material එක උඩ click කරන්න. ඒකට panorama image එකක් ඉල්ලනවා.
-b1fa05cc6521c383ff4f2e84a1abbfff.png)
අපිට sky image එකක් ඕන.
මෙන්න මේකෙන් download කරගන්න: Sky Clouds 09 – 2K Resolution

Download කරපු zip file එක extract කරලා,
sky image එක ඔයාගෙ project එකේ assets folder එකට දාගන්න.
-55d525950b67cdaa87f05d4432490df3.png)
ඊළගට ඒක Panorama slot එකට drag and drop කරන්න.
-69f6875008f15158314788cc37e5e9c3.png)
දැන් ඔයාට vibrant, stylish අහසක් බලාගන්න පුලුවන්.
-1291ba9f889b568ec8d663d6b6184503.png)
අහසෙ වැඩෙත් හරි!