42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
![]() |
// #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Wind.gdshaderinc"
|
||
|
|
||
|
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Math.gdshaderinc"
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc"
|
||
|
|
||
|
|
||
|
/*
|
||
|
uniform sampler2D terrainHeightMap;
|
||
|
uniform vec2 terrainCenterXZ = vec2( 0.0, 0.0 );
|
||
|
uniform vec2 terrainSizeXZ = vec2( 100.0, 100.0 );
|
||
|
uniform float terrainMinHeight = 0.0;
|
||
|
uniform float terrainMaxHeight = 100.0;
|
||
|
|
||
|
uniform sampler2D terrainNormalMap;
|
||
|
*/
|
||
|
|
||
|
void addTerrainOffset(
|
||
|
mat4 _MODEL_MATRIX,
|
||
|
inout vec3 _VERTEX,
|
||
|
|
||
|
sampler2D terrainHeightMap,
|
||
|
vec2 terrainCenterXZ,
|
||
|
vec2 terrainSizeXZ,
|
||
|
float terrainMinHeight,
|
||
|
float terrainMaxHeight
|
||
|
|
||
|
)
|
||
|
{
|
||
|
vec3 worldVertex = localToWorld( _VERTEX, _MODEL_MATRIX );
|
||
|
|
||
|
vec2 mapOffset = terrainCenterXZ - terrainSizeXZ/2.0;
|
||
|
|
||
|
vec2 uv = ( worldVertex.xz - mapOffset ) / terrainSizeXZ;
|
||
|
|
||
|
float height = mix( terrainMinHeight, terrainMaxHeight, texture( terrainHeightMap, uv ).r );
|
||
|
|
||
|
worldVertex.y += height;
|
||
|
|
||
|
_VERTEX = worldToLocal( worldVertex, _MODEL_MATRIX );
|
||
|
|
||
|
}
|