45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
shader_type spatial;
|
|
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx;
|
|
|
|
// Varyings
|
|
varying vec3 WorldPos;
|
|
|
|
uniform sampler2D colorGradient1;
|
|
uniform sampler2D colorGradient2;
|
|
uniform sampler2D NoiseTexture_Alpha : hint_normal;
|
|
uniform sampler2D NoiseTexture_Specular : hint_normal;
|
|
uniform sampler2D gradientSpecular;
|
|
|
|
void vertex() {
|
|
mat4 n_out2p0 = MODEL_MATRIX;
|
|
vec3 n_out3p0 = VERTEX;
|
|
vec3 n_out4p0 = (n_out2p0 * vec4(n_out3p0, 1.0)).xyz;
|
|
WorldPos = n_out4p0;
|
|
}
|
|
|
|
void fragment() {
|
|
float worldPosY = WorldPos.y;
|
|
float worldPosZ = WorldPos.z;
|
|
|
|
vec4 color1 = texture(colorGradient1, vec2(worldPosY));
|
|
vec4 color2 = texture(colorGradient2, vec2(worldPosZ));
|
|
|
|
vec3 mixVector = vec3(1.00000, 1.00000, 1.00000);
|
|
vec3 base_color = mix(vec3(color1.xyz), vec3(color2.xyz), mixVector);
|
|
|
|
// Alpha
|
|
float noiseAlpha = texture(NoiseTexture_Alpha, UV).r;
|
|
vec2 scaleUVFunc = vec2(1.00000, 1.00000);
|
|
vec2 offsetUVFunc = vec2(0.00000, 1.00000);
|
|
vec2 transparency = offsetUVFunc * scaleUVFunc + vec2(noiseAlpha);
|
|
|
|
// Specular
|
|
float noiseSpecular = texture(NoiseTexture_Specular, UV).r;
|
|
vec4 specular = texture(gradientSpecular, vec2(noiseSpecular));
|
|
|
|
// Output:0
|
|
ALBEDO = base_color;
|
|
ALPHA = transparency.x;
|
|
SPECULAR = specular.x;
|
|
}
|