├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── blender ├── hdri │ └── autumn_field_1k.exr ├── terrains │ ├── mask │ │ └── Image0000.png │ └── terrain_sample.blend └── textures │ ├── aerial_grass_rock_1k.blend │ ├── aerial_grass_rock_1k.blend │ └── textures │ │ ├── aerial_grass_rock_diff_1k.jpg │ │ ├── aerial_grass_rock_disp_1k.png │ │ ├── aerial_grass_rock_nor_gl_1k.exr │ │ └── aerial_grass_rock_rough_1k.jpg │ ├── brown_mud_leaves_01_1k.blend │ ├── brown_mud_leaves_01_1k.blend │ └── textures │ │ ├── brown_mud_leaves_01_diff_1k.jpg │ │ ├── brown_mud_leaves_01_disp_1k.png │ │ ├── brown_mud_leaves_01_nor_gl_1k.exr │ │ └── brown_mud_leaves_01_rough_1k.jpg │ ├── dry_ground_01_1k.blend │ ├── dry_ground_01_1k.blend │ └── textures │ │ ├── dry_ground_01_diff_1k.jpg │ │ ├── dry_ground_01_disp_1k.png │ │ ├── dry_ground_01_nor_gl_1k.exr │ │ └── dry_ground_01_rough_1k.jpg │ ├── forest_ground_04_1k.blend │ ├── forest_ground_04_1k.blend │ └── textures │ │ ├── forest_ground_04_diff_1k.jpg │ │ ├── forest_ground_04_disp_1k.png │ │ ├── forest_ground_04_nor_gl_1k.exr │ │ └── forest_ground_04_rough_1k.exr │ ├── grass_path_2_1k.blend │ ├── grass_path_2_1k.blend │ └── textures │ │ ├── grass_path_2_diff_1k.jpg │ │ ├── grass_path_2_disp_1k.png │ │ ├── grass_path_2_nor_gl_1k.exr │ │ └── grass_path_2_rough_1k.jpg │ ├── gray_rocks_1k.blend │ ├── gray_rocks_1k.blend │ └── textures │ │ ├── gray_rocks_diff_1k.jpg │ │ ├── gray_rocks_disp_1k.png │ │ ├── gray_rocks_nor_gl_1k.exr │ │ └── gray_rocks_rough_1k.exr │ ├── r_shape.png │ ├── r_shape.psd │ ├── rock_pitted_mossy_1k.blend │ ├── rock_pitted_mossy_1k.blend │ └── textures │ │ ├── rock_pitted_mossy_diff_1k.jpg │ │ ├── rock_pitted_mossy_disp_1k.png │ │ ├── rock_pitted_mossy_nor_gl_1k.exr │ │ └── rock_pitted_mossy_rough_1k.exr │ ├── rocks_ground_02_1k.blend │ ├── rocks_ground_02_1k.blend │ └── textures │ │ ├── rocks_ground_02_col_1k.jpg │ │ ├── rocks_ground_02_height_1k.png │ │ ├── rocks_ground_02_nor_gl_1k.exr │ │ └── rocks_ground_02_rough_1k.jpg │ └── sand_01_1k.blend │ ├── sand_01_1k.blend │ └── textures │ ├── sand_01_diff_1k.jpg │ ├── sand_01_disp_1k.png │ ├── sand_01_nor_gl_1k.exr │ └── sand_01_rough_1k.jpg ├── create_addon_archive.py ├── docs ├── inspector_map_parameters.png ├── inspector_shader.png └── terrain_in_viewport.jpg └── godot ├── .gitattributes ├── .gitignore ├── addons └── terrain_layered_shader │ ├── LICENSE.md │ ├── plugin.cfg │ ├── shaders │ ├── random.gdshaderinc │ ├── terrain_shader_base.tres │ ├── terrain_shader_masked.tres │ └── terrain_tools.gdshaderinc │ └── terrain_layered_shader.gd ├── art ├── terrains │ ├── terrain_sample.glb │ ├── terrain_sample.glb.import │ ├── terrain_sample_mask_sand.png │ ├── terrain_sample_mask_sand.png.import │ ├── terrain_sample_mask_sand_1.png │ └── terrain_sample_mask_sand_1.png.import └── textures │ ├── aerial_grass_rock_1k.blend │ └── textures │ │ ├── aerial_grass_rock_diff_1k.jpg │ │ ├── aerial_grass_rock_diff_1k.jpg.import │ │ ├── aerial_grass_rock_disp_1k.png │ │ ├── aerial_grass_rock_disp_1k.png.import │ │ ├── aerial_grass_rock_nor_gl_1k.png │ │ ├── aerial_grass_rock_nor_gl_1k.png.import │ │ ├── aerial_grass_rock_rough_1k.jpg │ │ └── aerial_grass_rock_rough_1k.jpg.import │ ├── brown_mud_leaves_01_1k.blend │ └── textures │ │ ├── brown_mud_leaves_01_diff_1k.jpg │ │ ├── brown_mud_leaves_01_diff_1k.jpg.import │ │ ├── brown_mud_leaves_01_disp_1k.png │ │ ├── brown_mud_leaves_01_disp_1k.png.import │ │ ├── brown_mud_leaves_01_nor_gl_1k.png │ │ ├── brown_mud_leaves_01_nor_gl_1k.png.import │ │ ├── brown_mud_leaves_01_rough_1k.jpg │ │ └── brown_mud_leaves_01_rough_1k.jpg.import │ ├── dry_ground_01_1k.blend │ └── textures │ │ ├── dry_ground_01_diff_1k.jpg │ │ ├── dry_ground_01_diff_1k.jpg.import │ │ ├── dry_ground_01_disp_1k.png │ │ ├── dry_ground_01_disp_1k.png.import │ │ ├── dry_ground_01_nor_gl_1k.png │ │ ├── dry_ground_01_nor_gl_1k.png.import │ │ ├── dry_ground_01_rough_1k.jpg │ │ └── dry_ground_01_rough_1k.jpg.import │ ├── forest_ground_04_1k.blend │ └── textures │ │ ├── forest_ground_04_diff_1k.jpg │ │ ├── forest_ground_04_diff_1k.jpg.import │ │ ├── forest_ground_04_disp_1k.png │ │ ├── forest_ground_04_disp_1k.png.import │ │ ├── forest_ground_04_nor_gl_1k.png │ │ ├── forest_ground_04_nor_gl_1k.png.import │ │ ├── forest_ground_04_rough_1k.exr.import │ │ ├── forest_ground_04_rough_1k.png │ │ └── forest_ground_04_rough_1k.png.import │ ├── grass_path_2_1k.blend │ └── textures │ │ ├── grass_path_2_diff_1k.jpg │ │ ├── grass_path_2_diff_1k.jpg.import │ │ ├── grass_path_2_disp_1k.png │ │ ├── grass_path_2_disp_1k.png.import │ │ ├── grass_path_2_nor_gl_1k.png │ │ ├── grass_path_2_nor_gl_1k.png.import │ │ ├── grass_path_2_rough_1k.jpg │ │ └── grass_path_2_rough_1k.jpg.import │ ├── gray_rocks_1k.blend │ └── textures │ │ ├── gray_rocks_diff_1k.jpg │ │ ├── gray_rocks_diff_1k.jpg.import │ │ ├── gray_rocks_disp_1k.png │ │ ├── gray_rocks_disp_1k.png.import │ │ ├── gray_rocks_nor_gl_1k.png │ │ ├── gray_rocks_nor_gl_1k.png.import │ │ ├── gray_rocks_rough_1k.png │ │ └── gray_rocks_rough_1k.png.import │ ├── mask.png │ ├── mask.png.import │ ├── r_shape.png │ ├── r_shape.png.import │ ├── rock_pitted_mossy_1k.blend │ └── textures │ │ ├── rock_pitted_mossy_diff_1k.jpg │ │ ├── rock_pitted_mossy_diff_1k.jpg.import │ │ ├── rock_pitted_mossy_disp_1k.png │ │ ├── rock_pitted_mossy_disp_1k.png.import │ │ ├── rock_pitted_mossy_nor_gl_1k.png │ │ ├── rock_pitted_mossy_nor_gl_1k.png.import │ │ ├── rock_pitted_mossy_rough_1k.png │ │ └── rock_pitted_mossy_rough_1k.png.import │ ├── rocks_ground_02_1k.blend │ └── textures │ │ ├── rocks_ground_02_col_1k.jpg │ │ ├── rocks_ground_02_col_1k.jpg.import │ │ ├── rocks_ground_02_height_1k.png │ │ ├── rocks_ground_02_height_1k.png.import │ │ ├── rocks_ground_02_nor_gl_1k.png │ │ ├── rocks_ground_02_nor_gl_1k.png.import │ │ ├── rocks_ground_02_rough_1k.jpg │ │ └── rocks_ground_02_rough_1k.jpg.import │ └── sand_01_1k.blend │ └── textures │ ├── sand_01_diff_1k.jpg │ ├── sand_01_diff_1k.jpg.import │ ├── sand_01_disp_1k.png │ ├── sand_01_disp_1k.png.import │ ├── sand_01_nor_gl_1k.png │ ├── sand_01_nor_gl_1k.png.import │ ├── sand_01_rough_1k.jpg │ └── sand_01_rough_1k.jpg.import ├── icon.png ├── icon.png.import ├── icon.svg ├── icon.svg.import ├── materials ├── terrain_brown_mud_leaves_material.tres ├── terrain_dry_ground_material.tres └── terrain_forest_ground_material.tres ├── project.godot ├── scenes ├── characters │ ├── player.gd │ └── player.tscn └── main.tscn └── testing └── heightmap_material.tscn /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: blackears 4 | patreon: markmckay 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: kitfox_com 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /blender/terrains/*.blend1 2 | /blender/textures/*.zip 3 | /build 4 | /godot_demo 5 | /export 6 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2023 Mark McKay 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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 OR COPYRIGHT HOLDERS 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Inspector shader](docs/terrain_in_viewport.jpg) 2 | 3 | # Terrain Layered Shader 4 | 5 | This project provides two shaders in Godot shading language for making large terrain textures. These shaders use a tile scrambling algorithm to break up the repeating texture pattern. You can also use masks to stack several textures on top of each other. 6 | 7 | This archive also includes a Blender file with a similar shading network you can use for rendering in Blender. 8 | 9 | [![Quick demo video](https://img.youtube.com/vi/DhPVYdpfRk8/0.jpg)](https://www.youtube.com/watch?v=DhPVYdpfRk8) 10 | 11 | ## Installation 12 | 13 | Download the archive and copy its code into your Godot project. You only need to copy the code in the /godot/addons/terrain_layered_shader folder. It must be placed in a folder named /addons/terrain_layered_shader in your Godot project. There is no need to enable this addon, since it is only used to provide the shader resources. 14 | 15 | ## Usage 16 | 17 | This addon provides two shaders - terrain_shader_base.tres which is the shader for the bottom of your terrain stack and terrain_shader_masked.tres which is used for every layer you stack on top of that base layer. The shaders are chained together by using the Next Pass slot of the shader below them. In this way, each next pass draws a new layer of terrain over top of all the shaders below it in the stack. 18 | 19 | To begin, select your mesh and in the Inspector window open the Surface Material Override. Click the dropdown and create a new ShaderMaterial. Then drag the res://addons/terrain_layered_shader/shaders/terrain_shader_base.tres shader into this slot. This will compile the shader and provide you with a lot of options to configure how it looks. You can set diffuse, metallic, roughness and normal maps here. This shader closely follows how Godot's StandardMaterial3D handles these parameters. You will also find a Tile Margin slider here. This determines the width of the blending region between two neighboring tiles. Adjusting this will make the transition between tiles more or less sharp. 20 | 21 | ![Inspector shader](docs/inspector_shader.png) 22 | 23 | When you have your base layer set up, you can add your first layer by using a terrain mask. In the Next Pass slot of your base shader, create a new ShaderMaterial and set its Shader to res://addons/terrain_layered_shader/shaders/terrain_shader_masked.tres. This layer works similarly to the base layer, but also includes a Mask section. When you open this, there is an area where you can set the mask that will be used to block out parts of your terrain. 24 | 25 | ![Shader parameters](docs/inspector_map_parameters.png) 26 | 27 | You will also need to set the Mask Channel. This tells the shader program which of the mask layers to use. (This is to allow users to pack several different masks into the same texture.) So if you want to use the red channel of your mask texture, set the Red component of the Mask Channel to 1 and set the other sliders to 0. If you want to use the green channel, set Green to 1 and everything else to 0. 28 | 29 | The Mask Scale will multiply the value of the mask to make it more or less transparent. You can use this to boost the power of a mask if it is not strong enough by default. 30 | 31 | You can also adjust the masks' UV scale and offset here if you wish. 32 | 33 | Once you're created your first layer, you can continue to create more layers by adding a new ShaderMaterial to the Next Pass parameter and setting it to be a terrain_shader_masked.tres. 34 | 35 | You should never use the terrain_shader_masked.tres as the bottom most layer in your layer stack. The terrain_shader_masked is considered to be transparent and so is drawn on the transparent pass. This can cause strange artifacts when you render it. Always use a terrain_shader_base as the first layer and place terrain_shader_masked for all subsequent layers. 36 | 37 | ## Support 38 | 39 | If you found this software useful, please consider buying me a coffee on Kofi. Every contribution helps me to make more software: 40 | 41 | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y43J6OB) 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /blender/hdri/autumn_field_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/hdri/autumn_field_1k.exr -------------------------------------------------------------------------------- /blender/terrains/mask/Image0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/terrains/mask/Image0000.png -------------------------------------------------------------------------------- /blender/terrains/terrain_sample.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/terrains/terrain_sample.blend -------------------------------------------------------------------------------- /blender/textures/aerial_grass_rock_1k.blend/aerial_grass_rock_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/aerial_grass_rock_1k.blend/aerial_grass_rock_1k.blend -------------------------------------------------------------------------------- /blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg -------------------------------------------------------------------------------- /blender/textures/brown_mud_leaves_01_1k.blend/brown_mud_leaves_01_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/brown_mud_leaves_01_1k.blend/brown_mud_leaves_01_1k.blend -------------------------------------------------------------------------------- /blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg -------------------------------------------------------------------------------- /blender/textures/dry_ground_01_1k.blend/dry_ground_01_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/dry_ground_01_1k.blend/dry_ground_01_1k.blend -------------------------------------------------------------------------------- /blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg -------------------------------------------------------------------------------- /blender/textures/forest_ground_04_1k.blend/forest_ground_04_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/forest_ground_04_1k.blend/forest_ground_04_1k.blend -------------------------------------------------------------------------------- /blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.exr -------------------------------------------------------------------------------- /blender/textures/grass_path_2_1k.blend/grass_path_2_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/grass_path_2_1k.blend/grass_path_2_1k.blend -------------------------------------------------------------------------------- /blender/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg -------------------------------------------------------------------------------- /blender/textures/gray_rocks_1k.blend/gray_rocks_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/gray_rocks_1k.blend/gray_rocks_1k.blend -------------------------------------------------------------------------------- /blender/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.exr -------------------------------------------------------------------------------- /blender/textures/r_shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/r_shape.png -------------------------------------------------------------------------------- /blender/textures/r_shape.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/r_shape.psd -------------------------------------------------------------------------------- /blender/textures/rock_pitted_mossy_1k.blend/rock_pitted_mossy_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rock_pitted_mossy_1k.blend/rock_pitted_mossy_1k.blend -------------------------------------------------------------------------------- /blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.exr -------------------------------------------------------------------------------- /blender/textures/rocks_ground_02_1k.blend/rocks_ground_02_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rocks_ground_02_1k.blend/rocks_ground_02_1k.blend -------------------------------------------------------------------------------- /blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg -------------------------------------------------------------------------------- /blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png -------------------------------------------------------------------------------- /blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg -------------------------------------------------------------------------------- /blender/textures/sand_01_1k.blend/sand_01_1k.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/sand_01_1k.blend/sand_01_1k.blend -------------------------------------------------------------------------------- /blender/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg -------------------------------------------------------------------------------- /blender/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png -------------------------------------------------------------------------------- /blender/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.exr -------------------------------------------------------------------------------- /blender/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/blender/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg -------------------------------------------------------------------------------- /create_addon_archive.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # MIT License 4 | # 5 | # Copyright (c) 2023 Mark McKay 6 | # This file is for packaging Godot addons for various projects (https://github.com/blackears). 7 | # 8 | # Permission is hereby granted, free of charge, to any person obtaining a copy 9 | # of this software and associated documentation files (the "Software"), to deal 10 | # in the Software without restriction, including without limitation the rights 11 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | # copies of the Software, and to permit persons to whom the Software is 13 | # furnished to do so, subject to the following conditions: 14 | # 15 | # The above copyright notice and this permission notice shall be included in all 16 | # copies or substantial portions of the Software. 17 | # 18 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | # SOFTWARE. 25 | 26 | import os 27 | import shutil 28 | import sys 29 | import getopt 30 | import platform 31 | 32 | projectName = 'terrain_layered_shader' 33 | extensions = [".gd", ".tres", ".tscn", ".gdshaderinc", ".glsl", ".cfg", ".txt", ".md", ".glb", ".gltf", ".jpg", ".jpeg", ".png", ".exr", ".bin"] 34 | 35 | 36 | def copy_files_with_suffix(source_dir, dest_dir, suffixes): 37 | for root, dirs, files in os.walk(source_dir): 38 | for file in files: 39 | if any(file.endswith(suffix) for suffix in suffixes): 40 | source_path = os.path.join(root, file) 41 | dest_path = os.path.join(dest_dir, os.path.relpath(source_path, source_dir)) 42 | os.makedirs(os.path.dirname(dest_path), exist_ok=True) 43 | shutil.copy2(source_path, dest_path) 44 | 45 | def make(): 46 | 47 | #Delete any existing build directory 48 | if os.path.exists('build'): 49 | shutil.rmtree('build') 50 | 51 | copy_files_with_suffix("godot/addons/" + projectName + "/", "build/addons/" + projectName + "/", extensions); 52 | 53 | 54 | #Build addon zip file 55 | if not os.path.exists('export'): 56 | #shutil.rmtree('export') 57 | os.mkdir('export') 58 | 59 | shutil.make_archive("export/" + projectName + "_godot_addon", "zip", "build") 60 | 61 | 62 | 63 | if __name__ == '__main__': 64 | 65 | make() 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/inspector_map_parameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/docs/inspector_map_parameters.png -------------------------------------------------------------------------------- /docs/inspector_shader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/docs/inspector_shader.png -------------------------------------------------------------------------------- /docs/terrain_in_viewport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/docs/terrain_in_viewport.jpg -------------------------------------------------------------------------------- /godot/.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files. 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /godot/.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2023 Mark McKay 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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 OR COPYRIGHT HOLDERS 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. -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Terrain Layered Shader Resources" 4 | description="A set of shaders for drawing rich layered terrain environments in Godot." 5 | author="Mark McKay" 6 | version="1.0.0" 7 | script="terrain_layered_shader.gd" 8 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/shaders/random.gdshaderinc: -------------------------------------------------------------------------------- 1 | /* 2 | static.frag 3 | by Spatial 4 | 05 July 2013 5 | 6 | adapted from code by by Spatial 7 | https://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl 8 | */ 9 | 10 | 11 | // A single iteration of Bob Jenkins' One-At-A-Time hashing algorithm. 12 | uint hash( uint x ) { 13 | x += ( x << 10u ); 14 | x ^= ( x >> 6u ); 15 | x += ( x << 3u ); 16 | x ^= ( x >> 11u ); 17 | x += ( x << 15u ); 18 | return x; 19 | } 20 | 21 | 22 | // Compound versions of the hashing algorithm I whipped together. 23 | uint hash_f2( uvec2 v ) { return hash( v.x ^ hash(v.y) ); } 24 | uint hash_f3( uvec3 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ); } 25 | uint hash_f4( uvec4 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ^ hash(v.w) ); } 26 | 27 | 28 | 29 | // Construct a float with half-open range [0:1] using low 23 bits. 30 | // All zeroes yields 0.0, all ones yields the next smallest representable value below 1.0. 31 | float floatConstruct( uint m ) { 32 | const uint ieeeMantissa = 0x007FFFFFu; // binary32 mantissa bitmask 33 | const uint ieeeOne = 0x3F800000u; // 1.0 in IEEE binary32 34 | 35 | m &= ieeeMantissa; // Keep only mantissa bits (fractional part) 36 | m |= ieeeOne; // Add fractional part to 1.0 37 | 38 | float f = uintBitsToFloat( m ); // Range [1:2] 39 | return f - 1.0; // Range [0:1] 40 | } 41 | 42 | 43 | // Pseudo-random value in half-open range [0:1]. 44 | float random_f1( float x ) { return floatConstruct(hash(floatBitsToUint(x))); } 45 | float random_f2( vec2 v ) { return floatConstruct(hash_f2(floatBitsToUint(v))); } 46 | float random_f3( vec3 v ) { return floatConstruct(hash_f3(floatBitsToUint(v))); } 47 | float random_f4( vec4 v ) { return floatConstruct(hash_f4(floatBitsToUint(v))); } 48 | 49 | vec3 random_f2_v3( vec2 v ) { return vec3( 50 | floatConstruct(hash_f2(floatBitsToUint(v))), 51 | floatConstruct(hash_f2(floatBitsToUint(v + 1.0))), 52 | floatConstruct(hash_f2(floatBitsToUint(v + 2.0))) 53 | ); 54 | } 55 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/shaders/terrain_shader_base.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Shader" format=3 uid="uid://bn7kugcjkvobl"] 2 | 3 | [resource] 4 | code = "/** 5 | * MIT License 6 | * 7 | * Copyright (c) 2023 Mark McKay 8 | * https://github.com/blackears/terrain_layered_shader 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a copy 11 | * of this software and associated documentation files (the \"Software\"), to deal 12 | * in the Software without restriction, including without limitation the rights 13 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | * copies of the Software, and to permit persons to whom the Software is 15 | * furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included in all 18 | * copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | * SOFTWARE. 27 | */ 28 | 29 | shader_type spatial; 30 | render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx; 31 | 32 | #include \"res://addons/terrain_layered_shader/shaders/terrain_tools.gdshaderinc\" 33 | 34 | uniform float tile_margin : hint_range(0, 1) = .1; 35 | uniform vec2 uv_terrain_scale = vec2(1.0, 1.0); 36 | uniform vec2 uv_terrain_offset; 37 | 38 | group_uniforms Albedo; 39 | uniform vec4 albedo : source_color = vec4(1.0, 1.0, 1.0, 1.0); 40 | uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable; 41 | 42 | group_uniforms Metalic; 43 | uniform float metallic; 44 | uniform sampler2D texture_metallic : filter_linear_mipmap, repeat_enable, hint_default_white; 45 | uniform vec4 metallic_texture_channel; 46 | 47 | group_uniforms Roughness; 48 | uniform float roughness : hint_range(0, 1) = 1.0; 49 | uniform sampler2D texture_roughness : hint_roughness_r, filter_linear_mipmap, repeat_enable; 50 | 51 | group_uniforms Specular; 52 | uniform float specular; 53 | 54 | group_uniforms Normal; 55 | uniform sampler2D texture_normal : hint_roughness_normal, filter_linear_mipmap, repeat_enable; 56 | uniform float normal_scale : hint_range(-16, 16) = 1.0; 57 | 58 | group_uniforms Height; 59 | uniform sampler2D texture_heightmap : hint_default_black,filter_linear_mipmap,repeat_enable; 60 | uniform bool deep_parallax = false; 61 | uniform float heightmap_scale = 5.0; 62 | uniform int heightmap_min_layers = 8; 63 | uniform int heightmap_max_layers = 32; 64 | uniform vec2 heightmap_flip = vec2(1, 1); 65 | 66 | 67 | varying vec2 terrain_uv; 68 | 69 | void vertex() { 70 | terrain_uv = UV * uv_terrain_scale.xy + uv_terrain_offset.xy; 71 | } 72 | 73 | 74 | void fragment() { 75 | vec2 base_uv = terrain_uv; 76 | if (!deep_parallax) 77 | { 78 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 79 | float depth = 1.0 - texture(texture_heightmap, base_uv).r; 80 | vec2 ofs = base_uv - view_dir.xy * depth * heightmap_scale * 0.01; 81 | base_uv=ofs; 82 | } 83 | else 84 | { 85 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 86 | float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir))); 87 | float layer_depth = 1.0 / num_layers; 88 | float current_layer_depth = 0.0; 89 | vec2 P = view_dir.xy * heightmap_scale * 0.01; 90 | vec2 delta = P / num_layers; 91 | vec2 ofs = base_uv; 92 | float depth = 1.0 - texture(texture_heightmap, ofs).r; 93 | float current_depth = 0.0; 94 | while(current_depth < depth) { 95 | ofs -= delta; 96 | depth = 1.0 - texture(texture_heightmap, ofs).r; 97 | current_depth += layer_depth; 98 | } 99 | vec2 prev_ofs = ofs + delta; 100 | float after_depth = depth - current_depth; 101 | float before_depth = ( 1.0 - texture(texture_heightmap, prev_ofs).r ) - current_depth + layer_depth; 102 | float weight = after_depth / (after_depth - before_depth); 103 | ofs = mix(ofs,prev_ofs,weight); 104 | base_uv=ofs; 105 | } 106 | 107 | vec4 albedo_tex = sample_tiling(texture_albedo, base_uv, tile_margin); 108 | ALBEDO = albedo.rgb * albedo_tex.rgb; 109 | float metallic_tex = dot(sample_tiling(texture_metallic, base_uv, tile_margin), metallic_texture_channel); 110 | METALLIC = metallic_tex * metallic; 111 | vec4 roughness_texture_channel = vec4(1.0, 0.0, 0.0, 0.0); 112 | float roughness_tex = dot(sample_tiling(texture_roughness, base_uv, tile_margin), roughness_texture_channel); 113 | ROUGHNESS = roughness_tex * roughness; 114 | NORMAL_MAP = sample_tiling(texture_normal, base_uv, tile_margin).rgb; 115 | NORMAL_MAP_DEPTH = normal_scale; 116 | 117 | SPECULAR = specular; 118 | } 119 | " 120 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/shaders/terrain_shader_masked.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Shader" format=3 uid="uid://cj5ui8mbwgx27"] 2 | 3 | [resource] 4 | code = "/** 5 | * MIT License 6 | * 7 | * Copyright (c) 2023 Mark McKay 8 | * https://github.com/blackears/terrain_layered_shader 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a copy 11 | * of this software and associated documentation files (the \"Software\"), to deal 12 | * in the Software without restriction, including without limitation the rights 13 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | * copies of the Software, and to permit persons to whom the Software is 15 | * furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included in all 18 | * copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | * SOFTWARE. 27 | */ 28 | 29 | 30 | shader_type spatial; 31 | render_mode blend_mix, depth_draw_never, cull_back, diffuse_burley, specular_schlick_ggx; 32 | 33 | #include \"res://addons/terrain_layered_shader/shaders/terrain_tools.gdshaderinc\" 34 | 35 | uniform float tile_margin : hint_range(0, 1) = .1; 36 | uniform vec2 uv_terrain_scale = vec2(1.0, 1.0); 37 | uniform vec2 uv_terrain_offset; 38 | 39 | group_uniforms Albedo; 40 | uniform vec4 albedo : source_color = vec4(1.0, 1.0, 1.0, 1.0); 41 | uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable; 42 | 43 | group_uniforms Metalic; 44 | uniform float metallic; 45 | uniform sampler2D texture_metallic : filter_linear_mipmap, repeat_enable, hint_default_white; 46 | uniform vec4 metallic_texture_channel; 47 | 48 | group_uniforms Roughness; 49 | uniform float roughness : hint_range(0, 1) = 1.0; 50 | uniform sampler2D texture_roughness : hint_roughness_r, filter_linear_mipmap, repeat_enable; 51 | 52 | group_uniforms Specular; 53 | uniform float specular; 54 | 55 | group_uniforms Normal; 56 | uniform sampler2D texture_normal : hint_roughness_normal, filter_linear_mipmap, repeat_enable; 57 | uniform float normal_scale : hint_range(-16, 16) = 1.0; 58 | 59 | group_uniforms Height; 60 | uniform sampler2D texture_heightmap : hint_default_black,filter_linear_mipmap,repeat_enable; 61 | uniform bool deep_parallax = false; 62 | uniform float heightmap_scale = 5.0; 63 | uniform int heightmap_min_layers = 8; 64 | uniform int heightmap_max_layers = 32; 65 | uniform vec2 heightmap_flip = vec2(1, 1); 66 | 67 | group_uniforms Mask; 68 | uniform vec4 mask_channel : source_color = vec4(0.0, 0.0, 0.0, 0.0); 69 | uniform sampler2D texture_mask : source_color, filter_linear_mipmap, repeat_enable, hint_default_black; 70 | uniform float mask_scale = 1.0; 71 | uniform vec2 uv_mask_scale = vec2(1.0, 1.0); 72 | uniform vec2 uv_mask_offset; 73 | 74 | varying vec2 mask_uv; 75 | varying vec2 terrain_uv; 76 | 77 | void vertex() { 78 | mask_uv = UV * uv_mask_scale.xy + uv_mask_offset.xy; 79 | terrain_uv = UV * uv_terrain_scale.xy + uv_terrain_offset.xy; 80 | } 81 | 82 | 83 | void fragment() { 84 | vec2 base_uv = terrain_uv; 85 | if (!deep_parallax) 86 | { 87 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 88 | float depth = 1.0 - texture(texture_heightmap, base_uv).r; 89 | vec2 ofs = base_uv - view_dir.xy * depth * heightmap_scale * 0.01; 90 | base_uv=ofs; 91 | } 92 | else 93 | { 94 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 95 | float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir))); 96 | float layer_depth = 1.0 / num_layers; 97 | float current_layer_depth = 0.0; 98 | vec2 P = view_dir.xy * heightmap_scale * 0.01; 99 | vec2 delta = P / num_layers; 100 | vec2 ofs = base_uv; 101 | float depth = 1.0 - texture(texture_heightmap, ofs).r; 102 | float current_depth = 0.0; 103 | while(current_depth < depth) { 104 | ofs -= delta; 105 | depth = 1.0 - texture(texture_heightmap, ofs).r; 106 | current_depth += layer_depth; 107 | } 108 | vec2 prev_ofs = ofs + delta; 109 | float after_depth = depth - current_depth; 110 | float before_depth = ( 1.0 - texture(texture_heightmap, prev_ofs).r ) - current_depth + layer_depth; 111 | float weight = after_depth / (after_depth - before_depth); 112 | ofs = mix(ofs,prev_ofs,weight); 113 | base_uv=ofs; 114 | } 115 | 116 | vec4 albedo_tex = sample_tiling(texture_albedo, base_uv, tile_margin); 117 | ALBEDO = albedo.rgb * albedo_tex.rgb; 118 | float metallic_tex = dot(sample_tiling(texture_metallic, base_uv, tile_margin), metallic_texture_channel); 119 | METALLIC = metallic_tex * metallic; 120 | vec4 roughness_texture_channel = vec4(1.0, 0.0, 0.0, 0.0); 121 | float roughness_tex = dot(sample_tiling(texture_roughness, base_uv, tile_margin), roughness_texture_channel); 122 | ROUGHNESS = roughness_tex * roughness; 123 | NORMAL_MAP = sample_tiling(texture_normal, base_uv, tile_margin).rgb; 124 | NORMAL_MAP_DEPTH = normal_scale; 125 | 126 | SPECULAR = specular; 127 | 128 | ALPHA = dot(texture(texture_mask, mask_uv) * mask_scale, mask_channel); 129 | } 130 | " 131 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/shaders/terrain_tools.gdshaderinc: -------------------------------------------------------------------------------- 1 | /** 2 | * MIT License 3 | * 4 | * Copyright (c) 2023 Mark McKay 5 | * https://github.com/blackears/terrain_layered_shader 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | 26 | #include "res://addons/terrain_layered_shader/shaders/random.gdshaderinc" 27 | 28 | 29 | mat2 rot_mat(float angle) 30 | { 31 | return mat2(vec2(cos(angle), -sin(angle)), vec2(sin(angle), cos(angle))); 32 | } 33 | 34 | // Calculate a randomized uv transform matrix for a grid cell based on the position of the cell. 35 | // @cell_uv - UV cooridnate of the cell. 36 | mat2 get_cell_xform(vec2 uv) { 37 | //Quantize to cell coordinate. 38 | vec2 cell_uv = floor(uv); 39 | 40 | float angle = random_f2(cell_uv) * 2.0 * PI; 41 | mat2 r = rot_mat(angle); 42 | return r; 43 | } 44 | 45 | vec4 sample_tiling(in sampler2D tex, vec2 uv, float margin) 46 | { 47 | //Find neighboring cells we interpolate with 48 | vec2 cell = floor(uv); 49 | vec2 frac = fract(uv); 50 | 51 | //Amount to interpolate between neighbors 52 | vec2 weights; 53 | 54 | if (frac.x < .5) { 55 | cell.x -= 1.0; 56 | weights.x = min(frac.x / margin, .5) + .5; 57 | } 58 | else { 59 | weights.x = .5 - min((1.0 - frac.x) / margin, .5); 60 | } 61 | 62 | if (frac.y < .5) { 63 | cell.y -= 1.0; 64 | weights.y = min(frac.y / margin, .5) + .5; 65 | } 66 | else { 67 | weights.y = .5 - min((1.0 - frac.y) / margin, .5); 68 | } 69 | 70 | //Points where we sample 71 | vec2 uv00 = get_cell_xform(cell) * uv; 72 | vec2 uv10 = get_cell_xform(cell + vec2(1.0, 0.0)) * uv; 73 | vec2 uv01 = get_cell_xform(cell + vec2(0.0, 1.0)) * uv; 74 | vec2 uv11 = get_cell_xform(cell + vec2(1.0, 1.0)) * uv; 75 | 76 | //Colors sampled at points 77 | vec4 c00 = texture(tex, uv00); 78 | vec4 c10 = texture(tex, uv10); 79 | vec4 c01 = texture(tex, uv01); 80 | vec4 c11 = texture(tex, uv11); 81 | 82 | //Do interpolation 83 | vec4 cx0 = mix(c00, c10, smoothstep(0, 1, weights.x)); 84 | vec4 cx1 = mix(c01, c11, smoothstep(0, 1, weights.x)); 85 | vec4 cxy = mix(cx0, cx1, smoothstep(0, 1, weights.y)); 86 | 87 | return cxy; 88 | } 89 | -------------------------------------------------------------------------------- /godot/addons/terrain_layered_shader/terrain_layered_shader.gd: -------------------------------------------------------------------------------- 1 | # MIT License 2 | # 3 | # Copyright (c) 2023 Mark McKay 4 | # https://github.com/blackears/terrain_layered_shader 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in all 14 | # copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | # SOFTWARE. 23 | 24 | @tool 25 | extends EditorPlugin 26 | 27 | 28 | func _enter_tree(): 29 | # Initialization of the plugin goes here. 30 | pass 31 | 32 | 33 | func _exit_tree(): 34 | # Clean-up of the plugin goes here. 35 | pass 36 | -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/terrains/terrain_sample.glb -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample.glb.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | importer_version=1 5 | type="PackedScene" 6 | uid="uid://bw2u57o6113id" 7 | path="res://.godot/imported/terrain_sample.glb-7b6ba1fadaad05099a7877736565ed9a.scn" 8 | 9 | [deps] 10 | 11 | source_file="res://art/terrains/terrain_sample.glb" 12 | dest_files=["res://.godot/imported/terrain_sample.glb-7b6ba1fadaad05099a7877736565ed9a.scn"] 13 | 14 | [params] 15 | 16 | nodes/root_type="" 17 | nodes/root_name="" 18 | nodes/apply_root_scale=true 19 | nodes/root_scale=1.0 20 | meshes/ensure_tangents=true 21 | meshes/generate_lods=true 22 | meshes/create_shadow_meshes=true 23 | meshes/light_baking=1 24 | meshes/lightmap_texel_size=0.2 25 | meshes/force_disable_compression=false 26 | skins/use_named_skins=true 27 | animation/import=true 28 | animation/fps=30 29 | animation/trimming=false 30 | animation/remove_immutable_tracks=true 31 | import_script/path="" 32 | _subresources={} 33 | gltf/naming_version=1 34 | gltf/embedded_image_handling=1 35 | -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample_mask_sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/terrains/terrain_sample_mask_sand.png -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample_mask_sand.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://brmlq4nuhec0f" 6 | path.s3tc="res://.godot/imported/terrain_sample_mask_sand.png-e14aee1e9406c40627f6235b9a3d22cc.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | generator_parameters={} 12 | 13 | [deps] 14 | 15 | source_file="res://art/terrains/terrain_sample_mask_sand.png" 16 | dest_files=["res://.godot/imported/terrain_sample_mask_sand.png-e14aee1e9406c40627f6235b9a3d22cc.s3tc.ctex"] 17 | 18 | [params] 19 | 20 | compress/mode=2 21 | compress/high_quality=false 22 | compress/lossy_quality=0.7 23 | compress/hdr_compression=1 24 | compress/normal_map=1 25 | compress/channel_pack=0 26 | mipmaps/generate=true 27 | mipmaps/limit=-1 28 | roughness/mode=1 29 | roughness/src_normal="res://art/terrains/terrain_sample_mask_sand.png" 30 | process/fix_alpha_border=true 31 | process/premult_alpha=false 32 | process/normal_map_invert_y=false 33 | process/hdr_as_srgb=false 34 | process/hdr_clamp_exposure=false 35 | process/size_limit=0 36 | detect_3d/compress_to=0 37 | -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample_mask_sand_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/terrains/terrain_sample_mask_sand_1.png -------------------------------------------------------------------------------- /godot/art/terrains/terrain_sample_mask_sand_1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://714r5en5a8vr" 6 | path.s3tc="res://.godot/imported/terrain_sample_mask_sand_1.png-f45a1dc29d54c8857c0e04da318e488c.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | generator_parameters={} 12 | 13 | [deps] 14 | 15 | source_file="res://art/terrains/terrain_sample_mask_sand_1.png" 16 | dest_files=["res://.godot/imported/terrain_sample_mask_sand_1.png-f45a1dc29d54c8857c0e04da318e488c.s3tc.ctex"] 17 | 18 | [params] 19 | 20 | compress/mode=2 21 | compress/high_quality=false 22 | compress/lossy_quality=0.7 23 | compress/hdr_compression=1 24 | compress/normal_map=0 25 | compress/channel_pack=0 26 | mipmaps/generate=true 27 | mipmaps/limit=-1 28 | roughness/mode=0 29 | roughness/src_normal="" 30 | process/fix_alpha_border=true 31 | process/premult_alpha=false 32 | process/normal_map_invert_y=false 33 | process/hdr_as_srgb=false 34 | process/hdr_clamp_exposure=false 35 | process/size_limit=0 36 | detect_3d/compress_to=0 37 | -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://co6a2m5bvx2qm" 6 | path="res://.godot/imported/aerial_grass_rock_diff_1k.jpg-89d950f7e1b81af6e9f6d55a9dc3d25c.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_diff_1k.jpg" 14 | dest_files=["res://.godot/imported/aerial_grass_rock_diff_1k.jpg-89d950f7e1b81af6e9f6d55a9dc3d25c.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d0lerg8r2t3bc" 6 | path="res://.godot/imported/aerial_grass_rock_disp_1k.png-39e8c4bca7596768215a90c6ff5b6b7a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_disp_1k.png" 14 | dest_files=["res://.godot/imported/aerial_grass_rock_disp_1k.png-39e8c4bca7596768215a90c6ff5b6b7a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://nf1ty7qaika6" 6 | path="res://.godot/imported/aerial_grass_rock_nor_gl_1k.png-6118d615698e8b678ab5482b791d1617.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_nor_gl_1k.png" 14 | dest_files=["res://.godot/imported/aerial_grass_rock_nor_gl_1k.png-6118d615698e8b678ab5482b791d1617.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cwc1pt8agxhrr" 6 | path="res://.godot/imported/aerial_grass_rock_rough_1k.jpg-f279323a7bc6293aadeb0d30b934f157.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/aerial_grass_rock_1k.blend/textures/aerial_grass_rock_rough_1k.jpg" 14 | dest_files=["res://.godot/imported/aerial_grass_rock_rough_1k.jpg-f279323a7bc6293aadeb0d30b934f157.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ddb176afscjn4" 6 | path.s3tc="res://.godot/imported/brown_mud_leaves_01_diff_1k.jpg-1e4cf748a60edf4bd604161e98dfa808.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_diff_1k.jpg" 15 | dest_files=["res://.godot/imported/brown_mud_leaves_01_diff_1k.jpg-1e4cf748a60edf4bd604161e98dfa808.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dq5twu0o7mkov" 6 | path.s3tc="res://.godot/imported/brown_mud_leaves_01_disp_1k.png-1563d86e16ed217ffabb51f9f35a5a5c.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_disp_1k.png" 15 | dest_files=["res://.godot/imported/brown_mud_leaves_01_disp_1k.png-1563d86e16ed217ffabb51f9f35a5a5c.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ckqnjn518grbj" 6 | path.s3tc="res://.godot/imported/brown_mud_leaves_01_nor_gl_1k.png-fa1dad95db3a1aaf5e956d69d0ef7e4a.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.png" 15 | dest_files=["res://.godot/imported/brown_mud_leaves_01_nor_gl_1k.png-fa1dad95db3a1aaf5e956d69d0ef7e4a.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=1 28 | roughness/src_normal="res://art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dkflwqb6w78g" 6 | path.s3tc="res://.godot/imported/brown_mud_leaves_01_rough_1k.jpg-58620b745d769710f04aa3b33b0abad8.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/brown_mud_leaves_01_1k.blend/textures/brown_mud_leaves_01_rough_1k.jpg" 15 | dest_files=["res://.godot/imported/brown_mud_leaves_01_rough_1k.jpg-58620b745d769710f04aa3b33b0abad8.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dgi8m764tqv8x" 6 | path.s3tc="res://.godot/imported/dry_ground_01_diff_1k.jpg-d357fdbb1226c00e655745f564f166b1.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_diff_1k.jpg" 15 | dest_files=["res://.godot/imported/dry_ground_01_diff_1k.jpg-d357fdbb1226c00e655745f564f166b1.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bgaxlymlosu0p" 6 | path="res://.godot/imported/dry_ground_01_disp_1k.png-371f37aea8ed5924b0241c801aff9df9.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_disp_1k.png" 14 | dest_files=["res://.godot/imported/dry_ground_01_disp_1k.png-371f37aea8ed5924b0241c801aff9df9.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://fg7bh2ejofe1" 6 | path.s3tc="res://.godot/imported/dry_ground_01_nor_gl_1k.png-7b899960511d63b99ea2e9f2505a04c2.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.png" 15 | dest_files=["res://.godot/imported/dry_ground_01_nor_gl_1k.png-7b899960511d63b99ea2e9f2505a04c2.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=1 28 | roughness/src_normal="res://art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://q1dbwwcluvmc" 6 | path.s3tc="res://.godot/imported/dry_ground_01_rough_1k.jpg-95fafcb0b4cc62c8b61adf3fe6ae7a17.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/dry_ground_01_1k.blend/textures/dry_ground_01_rough_1k.jpg" 15 | dest_files=["res://.godot/imported/dry_ground_01_rough_1k.jpg-95fafcb0b4cc62c8b61adf3fe6ae7a17.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cgr2crbtpgung" 6 | path.s3tc="res://.godot/imported/forest_ground_04_diff_1k.jpg-60da90027553380b7a07313f7c9d2454.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg" 15 | dest_files=["res://.godot/imported/forest_ground_04_diff_1k.jpg-60da90027553380b7a07313f7c9d2454.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dgo8fik4i361m" 6 | path.s3tc="res://.godot/imported/forest_ground_04_disp_1k.png-ea384d958c55a987f3b8dc824c2f461c.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png" 15 | dest_files=["res://.godot/imported/forest_ground_04_disp_1k.png-ea384d958c55a987f3b8dc824c2f461c.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://wsem0mmybuoh" 6 | path.s3tc="res://.godot/imported/forest_ground_04_nor_gl_1k.png-bc90693d6d77f83dd3d5cf425fe3a025.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png" 15 | dest_files=["res://.godot/imported/forest_ground_04_nor_gl_1k.png-bc90693d6d77f83dd3d5cf425fe3a025.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=1 28 | roughness/src_normal="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.exr.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://m0xro3l81kvj" 6 | path="res://.godot/imported/forest_ground_04_rough_1k.exr-e2a35f5f5c3b93fa5c843e50aea9c17d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.exr" 14 | dest_files=["res://.godot/imported/forest_ground_04_rough_1k.exr-e2a35f5f5c3b93fa5c843e50aea9c17d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.png -------------------------------------------------------------------------------- /godot/art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bm2285el4pb05" 6 | path.s3tc="res://.godot/imported/forest_ground_04_rough_1k.png-b703e053ceb871b05d93cc060f815a5c.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.png" 15 | dest_files=["res://.godot/imported/forest_ground_04_rough_1k.png-b703e053ceb871b05d93cc060f815a5c.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dn1khbgn5nxqa" 6 | path="res://.godot/imported/grass_path_2_diff_1k.jpg-684338b38c1cd27662c301a2c12ab71a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/grass_path_2_1k.blend/textures/grass_path_2_diff_1k.jpg" 14 | dest_files=["res://.godot/imported/grass_path_2_diff_1k.jpg-684338b38c1cd27662c301a2c12ab71a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bkaggte4ua2yg" 6 | path="res://.godot/imported/grass_path_2_disp_1k.png-eb71377d4f006f983a576e1c717c2989.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/grass_path_2_1k.blend/textures/grass_path_2_disp_1k.png" 14 | dest_files=["res://.godot/imported/grass_path_2_disp_1k.png-eb71377d4f006f983a576e1c717c2989.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bn2hw8qy2ctrv" 6 | path="res://.godot/imported/grass_path_2_nor_gl_1k.png-792b35edc8f9e2f0ee08d1b1b092f313.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/grass_path_2_1k.blend/textures/grass_path_2_nor_gl_1k.png" 14 | dest_files=["res://.godot/imported/grass_path_2_nor_gl_1k.png-792b35edc8f9e2f0ee08d1b1b092f313.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://sumu60rpdnxw" 6 | path="res://.godot/imported/grass_path_2_rough_1k.jpg-94b88e6eb6d7ffc3613bd949da3e9d7b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/grass_path_2_1k.blend/textures/grass_path_2_rough_1k.jpg" 14 | dest_files=["res://.godot/imported/grass_path_2_rough_1k.jpg-94b88e6eb6d7ffc3613bd949da3e9d7b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://508xlewy1vsf" 6 | path="res://.godot/imported/gray_rocks_diff_1k.jpg-8900ab250b619c914acd1fda14a9e0ad.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/gray_rocks_1k.blend/textures/gray_rocks_diff_1k.jpg" 14 | dest_files=["res://.godot/imported/gray_rocks_diff_1k.jpg-8900ab250b619c914acd1fda14a9e0ad.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://8e147urkmfc1" 6 | path="res://.godot/imported/gray_rocks_disp_1k.png-2f4cfd7e1f4e3d967097c21e330913c0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/gray_rocks_1k.blend/textures/gray_rocks_disp_1k.png" 14 | dest_files=["res://.godot/imported/gray_rocks_disp_1k.png-2f4cfd7e1f4e3d967097c21e330913c0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://csj5p1vxs236g" 6 | path="res://.godot/imported/gray_rocks_nor_gl_1k.png-2e55d29d8fa6e61ab7061e274d464897.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/gray_rocks_1k.blend/textures/gray_rocks_nor_gl_1k.png" 14 | dest_files=["res://.godot/imported/gray_rocks_nor_gl_1k.png-2e55d29d8fa6e61ab7061e274d464897.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.png -------------------------------------------------------------------------------- /godot/art/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b1t4puik4l73c" 6 | path="res://.godot/imported/gray_rocks_rough_1k.png-59f3dcab3667d4641aa2ec2efb2ad975.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/gray_rocks_1k.blend/textures/gray_rocks_rough_1k.png" 14 | dest_files=["res://.godot/imported/gray_rocks_rough_1k.png-59f3dcab3667d4641aa2ec2efb2ad975.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/mask.png -------------------------------------------------------------------------------- /godot/art/textures/mask.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b0j8tqelbhiht" 6 | path.s3tc="res://.godot/imported/mask.png-4e44bb7b586de259ab865e318a216fa3.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/mask.png" 15 | dest_files=["res://.godot/imported/mask.png-4e44bb7b586de259ab865e318a216fa3.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=7 28 | roughness/src_normal="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/r_shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/r_shape.png -------------------------------------------------------------------------------- /godot/art/textures/r_shape.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://swr56h0q60ht" 6 | path="res://.godot/imported/r_shape.png-0ef4ce8a8f5a6256014094244dfcda22.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/r_shape.png" 14 | dest_files=["res://.godot/imported/r_shape.png-0ef4ce8a8f5a6256014094244dfcda22.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=0 35 | -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://kl8f5sycfptr" 6 | path.s3tc="res://.godot/imported/rock_pitted_mossy_diff_1k.jpg-7ce86354ef56c785cf08a1b867ff416c.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg" 15 | dest_files=["res://.godot/imported/rock_pitted_mossy_diff_1k.jpg-7ce86354ef56c785cf08a1b867ff416c.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ca3mlyuxo5n1v" 6 | path.s3tc="res://.godot/imported/rock_pitted_mossy_disp_1k.png-25d71690b69f3b3fd05095701cbe677e.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png" 15 | dest_files=["res://.godot/imported/rock_pitted_mossy_disp_1k.png-25d71690b69f3b3fd05095701cbe677e.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://gs0mv4mmj67x" 6 | path.s3tc="res://.godot/imported/rock_pitted_mossy_nor_gl_1k.png-d9c055d3561332dcadf7a544187ff88b.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png" 15 | dest_files=["res://.godot/imported/rock_pitted_mossy_nor_gl_1k.png-d9c055d3561332dcadf7a544187ff88b.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=1 28 | roughness/src_normal="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.png -------------------------------------------------------------------------------- /godot/art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cbaj8o07d1fkg" 6 | path.s3tc="res://.godot/imported/rock_pitted_mossy_rough_1k.png-3c06aa0ddd01348a137861a1ee8d0b0a.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.png" 15 | dest_files=["res://.godot/imported/rock_pitted_mossy_rough_1k.png-3c06aa0ddd01348a137861a1ee8d0b0a.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ip0incwsxbm7" 6 | path="res://.godot/imported/rocks_ground_02_col_1k.jpg-eb8224a8fdaf977b2a8fc60562b4338e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_col_1k.jpg" 14 | dest_files=["res://.godot/imported/rocks_ground_02_col_1k.jpg-eb8224a8fdaf977b2a8fc60562b4338e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://1xfvgp3y0qm7" 6 | path="res://.godot/imported/rocks_ground_02_height_1k.png-5b6b7a5099015b706730bdef3fe6d954.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_height_1k.png" 14 | dest_files=["res://.godot/imported/rocks_ground_02_height_1k.png-5b6b7a5099015b706730bdef3fe6d954.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ck8ijbaeg3dxa" 6 | path="res://.godot/imported/rocks_ground_02_nor_gl_1k.png-4a1657212acf4da038ad8b6502ce2938.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_nor_gl_1k.png" 14 | dest_files=["res://.godot/imported/rocks_ground_02_nor_gl_1k.png-4a1657212acf4da038ad8b6502ce2938.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bkt5rh2j8h6fm" 6 | path="res://.godot/imported/rocks_ground_02_rough_1k.jpg-70f6decaff3164b6c92e9a5081e89628.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://art/textures/rocks_ground_02_1k.blend/textures/rocks_ground_02_rough_1k.jpg" 14 | dest_files=["res://.godot/imported/rocks_ground_02_rough_1k.jpg-70f6decaff3164b6c92e9a5081e89628.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cfbi20u2idwvs" 6 | path.s3tc="res://.godot/imported/sand_01_diff_1k.jpg-08ada73049a05e6f407dbab128b8b323.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/sand_01_1k.blend/textures/sand_01_diff_1k.jpg" 15 | dest_files=["res://.godot/imported/sand_01_diff_1k.jpg-08ada73049a05e6f407dbab128b8b323.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ddnsll14vyvbh" 6 | path.s3tc="res://.godot/imported/sand_01_disp_1k.png-b5df7bde11c10ba7942175629c43356b.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/sand_01_1k.blend/textures/sand_01_disp_1k.png" 15 | dest_files=["res://.godot/imported/sand_01_disp_1k.png-b5df7bde11c10ba7942175629c43356b.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.png -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bxfv112mg8wer" 6 | path.s3tc="res://.godot/imported/sand_01_nor_gl_1k.png-7339b3b15e36097ae8ce5d05f36d8689.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.png" 15 | dest_files=["res://.godot/imported/sand_01_nor_gl_1k.png-7339b3b15e36097ae8ce5d05f36d8689.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=1 28 | roughness/src_normal="res://art/textures/sand_01_1k.blend/textures/sand_01_nor_gl_1k.png" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/art/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg -------------------------------------------------------------------------------- /godot/art/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://xddlevh3w5j3" 6 | path.s3tc="res://.godot/imported/sand_01_rough_1k.jpg-0361f6279c3ad9e19b3bfa496341f347.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://art/textures/sand_01_1k.blend/textures/sand_01_rough_1k.jpg" 15 | dest_files=["res://.godot/imported/sand_01_rough_1k.jpg-0361f6279c3ad9e19b3bfa496341f347.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /godot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackears/terrain_layered_shader/ab81562f5ac17cf706726bd01a91bbdf2209a13b/godot/icon.png -------------------------------------------------------------------------------- /godot/icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d18mtnbtshee3" 6 | path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.png" 14 | dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /godot/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 36 | 48 | 52 | 57 | 62 | 67 | 72 | 76 | 80 | 85 | 90 | 91 | 96 | 101 | 102 | -------------------------------------------------------------------------------- /godot/icon.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bb5ty645xrx5o" 6 | path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://icon.svg" 15 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | svg/scale=1.0 37 | editor/scale_with_editor_scale=false 38 | editor/convert_colors_with_editor_theme=false 39 | -------------------------------------------------------------------------------- /godot/materials/terrain_brown_mud_leaves_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cqkccoy7bp4iv"] 2 | 3 | [ext_resource type="Material" uid="uid://kbvtsi5ywaih" path="res://materials/terrain_dry_ground_material.tres" id="1_u6xvu"] 4 | [ext_resource type="Shader" uid="uid://bn7kugcjkvobl" path="res://addons/terrain_layered_shader/shaders/terrain_shader_base.tres" id="2_iw8t6"] 5 | 6 | [resource] 7 | resource_local_to_scene = true 8 | render_priority = 0 9 | next_pass = ExtResource("1_u6xvu") 10 | shader = ExtResource("2_iw8t6") 11 | shader_parameter/tile_margin = 0.1 12 | shader_parameter/uv_terrain_scale = Vector2(1, 1) 13 | shader_parameter/uv_terrain_offset = null 14 | shader_parameter/albedo = Color(1, 1, 1, 1) 15 | shader_parameter/metallic = null 16 | shader_parameter/metallic_texture_channel = null 17 | shader_parameter/roughness = null 18 | shader_parameter/specular = null 19 | shader_parameter/normal_scale = null 20 | -------------------------------------------------------------------------------- /godot/materials/terrain_dry_ground_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://kbvtsi5ywaih"] 2 | 3 | [ext_resource type="Material" uid="uid://i0vtr30msggf" path="res://materials/terrain_forest_ground_material.tres" id="1_xh5l3"] 4 | [ext_resource type="Shader" uid="uid://cj5ui8mbwgx27" path="res://addons/terrain_layered_shader/shaders/terrain_shader_masked.tres" id="2_412rv"] 5 | 6 | [resource] 7 | resource_local_to_scene = true 8 | render_priority = 2 9 | next_pass = ExtResource("1_xh5l3") 10 | shader = ExtResource("2_412rv") 11 | shader_parameter/tile_margin = 0.1 12 | shader_parameter/uv_terrain_scale = Vector2(1, 1) 13 | shader_parameter/uv_terrain_offset = null 14 | shader_parameter/albedo = Color(1, 1, 1, 1) 15 | shader_parameter/metallic = null 16 | shader_parameter/metallic_texture_channel = null 17 | shader_parameter/roughness = null 18 | shader_parameter/specular = null 19 | shader_parameter/normal_scale = null 20 | shader_parameter/mask_channel = Color(0, 0, 0, 0) 21 | shader_parameter/mask_scale = 1.0 22 | shader_parameter/uv_mask_scale = Vector2(1, 1) 23 | shader_parameter/uv_mask_offset = null 24 | -------------------------------------------------------------------------------- /godot/materials/terrain_forest_ground_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://i0vtr30msggf"] 2 | 3 | [ext_resource type="Shader" uid="uid://cj5ui8mbwgx27" path="res://addons/terrain_layered_shader/shaders/terrain_shader_masked.tres" id="1_o2n3g"] 4 | 5 | [sub_resource type="ShaderMaterial" id="ShaderMaterial_niluj"] 6 | render_priority = 0 7 | shader = ExtResource("1_o2n3g") 8 | shader_parameter/tile_margin = 0.1 9 | shader_parameter/uv_terrain_scale = Vector2(1, 1) 10 | shader_parameter/uv_terrain_offset = null 11 | shader_parameter/albedo = Color(1, 1, 1, 1) 12 | shader_parameter/metallic = null 13 | shader_parameter/metallic_texture_channel = null 14 | shader_parameter/roughness = null 15 | shader_parameter/specular = null 16 | shader_parameter/normal_scale = null 17 | shader_parameter/mask_channel = Color(0, 0, 0, 0) 18 | shader_parameter/mask_scale = 1.0 19 | shader_parameter/uv_mask_scale = Vector2(1, 1) 20 | shader_parameter/uv_mask_offset = null 21 | 22 | [resource] 23 | resource_local_to_scene = true 24 | render_priority = 3 25 | next_pass = SubResource("ShaderMaterial_niluj") 26 | shader = ExtResource("1_o2n3g") 27 | shader_parameter/tile_margin = 0.1 28 | shader_parameter/uv_terrain_scale = Vector2(1, 1) 29 | shader_parameter/uv_terrain_offset = null 30 | shader_parameter/albedo = Color(1, 1, 1, 1) 31 | shader_parameter/metallic = null 32 | shader_parameter/metallic_texture_channel = null 33 | shader_parameter/roughness = null 34 | shader_parameter/specular = null 35 | shader_parameter/normal_scale = null 36 | shader_parameter/mask_channel = Color(0, 0, 0, 0) 37 | shader_parameter/mask_scale = 1.0 38 | shader_parameter/uv_mask_scale = Vector2(1, 1) 39 | shader_parameter/uv_mask_offset = null 40 | -------------------------------------------------------------------------------- /godot/project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="Terrain Shader" 14 | run/main_scene="res://scenes/main.tscn" 15 | config/features=PackedStringArray("4.2", "Mobile") 16 | config/icon="res://icon.svg" 17 | 18 | [editor_plugins] 19 | 20 | enabled=PackedStringArray("res://addons/terrain_layered_shader/plugin.cfg") 21 | 22 | [rendering] 23 | 24 | renderer/rendering_method="mobile" 25 | -------------------------------------------------------------------------------- /godot/scenes/characters/player.gd: -------------------------------------------------------------------------------- 1 | # MIT License 2 | # 3 | # Copyright (c) 2023 Mark McKay 4 | # https://github.com/blackears/cyclopsLevelBuilder 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy 7 | # of this software and associated documentation files (the "Software"), to deal 8 | # in the Software without restriction, including without limitation the rights 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | # copies of the Software, and to permit persons to whom the Software is 11 | # furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included in all 14 | # copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | # SOFTWARE. 23 | 24 | extends CharacterBody3D 25 | 26 | 27 | const SPEED = 8.0 28 | const TURN_SPEED = 2.0 29 | const JUMP_VELOCITY = 4.5 30 | 31 | # Get the gravity from the project settings to be synced with RigidBody nodes. 32 | var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") 33 | 34 | 35 | func _physics_process(delta): 36 | # Add the gravity. 37 | if not is_on_floor(): 38 | velocity.y -= gravity * delta 39 | 40 | # Handle Jump. 41 | if Input.is_action_just_pressed("ui_accept") and is_on_floor(): 42 | velocity.y = JUMP_VELOCITY 43 | 44 | # Get the input direction and handle the movement/deceleration. 45 | # As good practice, you should replace UI actions with custom gameplay actions. 46 | var x_axis:float = Input.get_axis("ui_right", "ui_left") 47 | var y_axis:float = Input.get_axis("ui_up", "ui_down") 48 | 49 | var basis:Basis = transform.basis 50 | basis = basis.rotated(Vector3.UP, delta * x_axis * TURN_SPEED) 51 | transform.basis = basis 52 | 53 | var direction = basis.z * y_axis 54 | 55 | # var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") 56 | # var direction = (transform.basis * Vector3(-input_dir.x, 0, -input_dir.y)).normalized() 57 | if direction: 58 | velocity.x = direction.x * SPEED 59 | velocity.z = direction.z * SPEED 60 | else: 61 | velocity.x = move_toward(velocity.x, 0, SPEED) 62 | velocity.z = move_toward(velocity.z, 0, SPEED) 63 | 64 | move_and_slide() 65 | -------------------------------------------------------------------------------- /godot/scenes/characters/player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://bh631yu6r7rfy"] 2 | 3 | [ext_resource type="Script" path="res://scenes/characters/player.gd" id="1_41wj7"] 4 | 5 | [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_l3vyk"] 6 | 7 | [sub_resource type="CapsuleMesh" id="CapsuleMesh_im40p"] 8 | 9 | [node name="Player" type="CharacterBody3D"] 10 | script = ExtResource("1_41wj7") 11 | 12 | [node name="CollisionShape3D" type="CollisionShape3D" parent="."] 13 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02465, 0) 14 | shape = SubResource("CapsuleShape3D_l3vyk") 15 | 16 | [node name="MeshInstance3D" type="MeshInstance3D" parent="."] 17 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.990078, 0) 18 | mesh = SubResource("CapsuleMesh_im40p") 19 | -------------------------------------------------------------------------------- /godot/testing/heightmap_material.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=17 format=3 uid="uid://s4b1fvi1i2gr"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://kl8f5sycfptr" path="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_diff_1k.jpg" id="1_f0ogt"] 4 | [ext_resource type="Texture2D" uid="uid://ca3mlyuxo5n1v" path="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_disp_1k.png" id="2_s01bc"] 5 | [ext_resource type="Texture2D" uid="uid://gs0mv4mmj67x" path="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_nor_gl_1k.png" id="3_krh2a"] 6 | [ext_resource type="Texture2D" uid="uid://cbaj8o07d1fkg" path="res://art/textures/rock_pitted_mossy_1k.blend/textures/rock_pitted_mossy_rough_1k.png" id="4_vviwb"] 7 | [ext_resource type="Texture2D" uid="uid://cgr2crbtpgung" path="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_diff_1k.jpg" id="5_y37jd"] 8 | [ext_resource type="Texture2D" uid="uid://dgo8fik4i361m" path="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_disp_1k.png" id="6_3sriw"] 9 | [ext_resource type="Texture2D" uid="uid://wsem0mmybuoh" path="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_nor_gl_1k.png" id="7_2mu87"] 10 | [ext_resource type="Texture2D" uid="uid://bm2285el4pb05" path="res://art/textures/forest_ground_04_1k.blend/textures/forest_ground_04_rough_1k.png" id="8_kt1be"] 11 | 12 | [sub_resource type="BoxMesh" id="BoxMesh_1gdyt"] 13 | 14 | [sub_resource type="Shader" id="Shader_f4jdx"] 15 | code = "// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's StandardMaterial3D. 16 | 17 | shader_type spatial; 18 | render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx; 19 | uniform vec4 albedo : source_color; 20 | uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable; 21 | uniform float point_size : hint_range(0,128); 22 | uniform float roughness : hint_range(0,1); 23 | uniform sampler2D texture_metallic : hint_default_white,filter_linear_mipmap,repeat_enable; 24 | uniform vec4 metallic_texture_channel; 25 | uniform sampler2D texture_roughness : hint_roughness_r,filter_linear_mipmap,repeat_enable; 26 | uniform float specular; 27 | uniform float metallic; 28 | uniform sampler2D texture_normal : hint_roughness_normal,filter_linear_mipmap,repeat_enable; 29 | uniform float normal_scale : hint_range(-16,16); 30 | uniform sampler2D texture_heightmap : hint_default_black,filter_linear_mipmap,repeat_enable; 31 | uniform float heightmap_scale; 32 | uniform int heightmap_min_layers; 33 | uniform int heightmap_max_layers; 34 | uniform vec2 heightmap_flip; 35 | uniform vec3 uv1_scale; 36 | uniform vec3 uv1_offset; 37 | uniform vec3 uv2_scale; 38 | uniform vec3 uv2_offset; 39 | 40 | 41 | void vertex() { 42 | UV=UV*uv1_scale.xy+uv1_offset.xy; 43 | } 44 | 45 | 46 | 47 | 48 | 49 | 50 | void fragment() { 51 | vec2 base_uv = UV; 52 | { 53 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 54 | float depth = 1.0 - texture(texture_heightmap, base_uv).r; 55 | vec2 ofs = base_uv - view_dir.xy * depth * heightmap_scale * 0.01; 56 | base_uv=ofs; 57 | } 58 | vec4 albedo_tex = texture(texture_albedo,base_uv); 59 | ALBEDO = albedo.rgb * albedo_tex.rgb; 60 | float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); 61 | METALLIC = metallic_tex * metallic; 62 | vec4 roughness_texture_channel = vec4(1.0,0.0,0.0,0.0); 63 | float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); 64 | ROUGHNESS = roughness_tex * roughness; 65 | SPECULAR = specular; 66 | NORMAL_MAP = texture(texture_normal,base_uv).rgb; 67 | NORMAL_MAP_DEPTH = normal_scale; 68 | } 69 | " 70 | 71 | [sub_resource type="ShaderMaterial" id="ShaderMaterial_40lwi"] 72 | render_priority = 0 73 | shader = SubResource("Shader_f4jdx") 74 | shader_parameter/albedo = Color(1, 1, 1, 1) 75 | shader_parameter/point_size = 1.0 76 | shader_parameter/roughness = 1.0 77 | shader_parameter/metallic_texture_channel = null 78 | shader_parameter/specular = 0.5 79 | shader_parameter/metallic = 0.0 80 | shader_parameter/normal_scale = 1.0 81 | shader_parameter/heightmap_scale = 5.0 82 | shader_parameter/heightmap_min_layers = 8 83 | shader_parameter/heightmap_max_layers = 32 84 | shader_parameter/heightmap_flip = Vector2(1, 1) 85 | shader_parameter/uv1_scale = Vector3(1, 1, 1) 86 | shader_parameter/uv1_offset = Vector3(0, 0, 0) 87 | shader_parameter/uv2_scale = Vector3(1, 1, 1) 88 | shader_parameter/uv2_offset = Vector3(0, 0, 0) 89 | shader_parameter/texture_albedo = ExtResource("1_f0ogt") 90 | shader_parameter/texture_roughness = ExtResource("4_vviwb") 91 | shader_parameter/texture_normal = ExtResource("3_krh2a") 92 | shader_parameter/texture_heightmap = ExtResource("2_s01bc") 93 | 94 | [sub_resource type="BoxMesh" id="BoxMesh_a7wkl"] 95 | 96 | [sub_resource type="Shader" id="Shader_i4wy3"] 97 | code = "// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's StandardMaterial3D. 98 | 99 | shader_type spatial; 100 | render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx; 101 | uniform vec4 albedo : source_color; 102 | uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable; 103 | uniform float point_size : hint_range(0,128); 104 | uniform float roughness : hint_range(0,1); 105 | uniform sampler2D texture_metallic : hint_default_white,filter_linear_mipmap,repeat_enable; 106 | uniform vec4 metallic_texture_channel; 107 | uniform sampler2D texture_roughness : hint_roughness_r,filter_linear_mipmap,repeat_enable; 108 | uniform float specular; 109 | uniform float metallic; 110 | uniform sampler2D texture_normal : hint_roughness_normal,filter_linear_mipmap,repeat_enable; 111 | uniform float normal_scale : hint_range(-16,16); 112 | uniform sampler2D texture_heightmap : hint_default_black,filter_linear_mipmap,repeat_enable; 113 | uniform float heightmap_scale; 114 | uniform int heightmap_min_layers; 115 | uniform int heightmap_max_layers; 116 | uniform vec2 heightmap_flip; 117 | uniform vec3 uv1_scale; 118 | uniform vec3 uv1_offset; 119 | uniform vec3 uv2_scale; 120 | uniform vec3 uv2_offset; 121 | 122 | 123 | void vertex() { 124 | UV=UV*uv1_scale.xy+uv1_offset.xy; 125 | } 126 | 127 | 128 | 129 | 130 | 131 | 132 | void fragment() { 133 | vec2 base_uv = UV; 134 | { 135 | vec3 view_dir = normalize(normalize(-VERTEX + EYE_OFFSET) * mat3(TANGENT * heightmap_flip.x, -BINORMAL * heightmap_flip.y, NORMAL)); 136 | float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir))); 137 | float layer_depth = 1.0 / num_layers; 138 | float current_layer_depth = 0.0; 139 | vec2 P = view_dir.xy * heightmap_scale * 0.01; 140 | vec2 delta = P / num_layers; 141 | vec2 ofs = base_uv; 142 | float depth = 1.0 - texture(texture_heightmap, ofs).r; 143 | float current_depth = 0.0; 144 | while(current_depth < depth) { 145 | ofs -= delta; 146 | depth = 1.0 - texture(texture_heightmap, ofs).r; 147 | current_depth += layer_depth; 148 | } 149 | vec2 prev_ofs = ofs + delta; 150 | float after_depth = depth - current_depth; 151 | float before_depth = ( 1.0 - texture(texture_heightmap, prev_ofs).r ) - current_depth + layer_depth; 152 | float weight = after_depth / (after_depth - before_depth); 153 | ofs = mix(ofs,prev_ofs,weight); 154 | base_uv=ofs; 155 | } 156 | vec4 albedo_tex = texture(texture_albedo,base_uv); 157 | ALBEDO = albedo.rgb * albedo_tex.rgb; 158 | float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); 159 | METALLIC = metallic_tex * metallic; 160 | vec4 roughness_texture_channel = vec4(1.0,0.0,0.0,0.0); 161 | float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); 162 | ROUGHNESS = roughness_tex * roughness; 163 | SPECULAR = specular; 164 | NORMAL_MAP = texture(texture_normal,base_uv).rgb; 165 | NORMAL_MAP_DEPTH = normal_scale; 166 | } 167 | " 168 | 169 | [sub_resource type="ShaderMaterial" id="ShaderMaterial_j6iwx"] 170 | render_priority = 0 171 | shader = SubResource("Shader_i4wy3") 172 | shader_parameter/albedo = Color(1, 1, 1, 1) 173 | shader_parameter/point_size = 1.0 174 | shader_parameter/roughness = 1.0 175 | shader_parameter/metallic_texture_channel = null 176 | shader_parameter/specular = 0.5 177 | shader_parameter/metallic = 0.0 178 | shader_parameter/normal_scale = 1.0 179 | shader_parameter/heightmap_scale = 5.0 180 | shader_parameter/heightmap_min_layers = 8 181 | shader_parameter/heightmap_max_layers = 32 182 | shader_parameter/heightmap_flip = Vector2(1, 1) 183 | shader_parameter/uv1_scale = Vector3(1, 1, 1) 184 | shader_parameter/uv1_offset = Vector3(0, 0, 0) 185 | shader_parameter/uv2_scale = Vector3(1, 1, 1) 186 | shader_parameter/uv2_offset = Vector3(0, 0, 0) 187 | shader_parameter/texture_albedo = ExtResource("5_y37jd") 188 | shader_parameter/texture_roughness = ExtResource("8_kt1be") 189 | shader_parameter/texture_normal = ExtResource("7_2mu87") 190 | shader_parameter/texture_heightmap = ExtResource("6_3sriw") 191 | 192 | [sub_resource type="BoxMesh" id="BoxMesh_n3ybt"] 193 | 194 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v8oy7"] 195 | heightmap_enabled = true 196 | 197 | [node name="Node3D" type="Node3D"] 198 | 199 | [node name="MeshInstance3D" type="MeshInstance3D" parent="."] 200 | mesh = SubResource("BoxMesh_1gdyt") 201 | surface_material_override/0 = SubResource("ShaderMaterial_40lwi") 202 | 203 | [node name="MeshInstance3D2" type="MeshInstance3D" parent="."] 204 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2.36079) 205 | mesh = SubResource("BoxMesh_a7wkl") 206 | surface_material_override/0 = SubResource("ShaderMaterial_j6iwx") 207 | 208 | [node name="MeshInstance3D3" type="MeshInstance3D" parent="."] 209 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.75341) 210 | mesh = SubResource("BoxMesh_n3ybt") 211 | surface_material_override/0 = SubResource("StandardMaterial3D_v8oy7") 212 | --------------------------------------------------------------------------------