89 lines
2.7 KiB
Plaintext
89 lines
2.7 KiB
Plaintext
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Textures.gdshaderinc"
|
|
|
|
uniform vec4 albedo : source_color;
|
|
uniform sampler2D texture_albedo : source_color, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform sampler2D texture_opacity:hint_default_white;
|
|
uniform float opacity: hint_range(0, 5) = 1;
|
|
|
|
#ifdef USE_ALPHA_SCISSOR
|
|
uniform float alphaScissorTreshold:hint_range(0,1) = 0.4;
|
|
#endif
|
|
|
|
#ifdef USE_ALPHA_DISCARD
|
|
uniform float alphaDiscardTreshold:hint_range(0,1) = 0.4;
|
|
#endif
|
|
|
|
uniform sampler2D texture_normal : hint_roughness_normal, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform float normal_scale : hint_range(0, 5.0) = 1.0;
|
|
|
|
uniform sampler2D texture_roughness : hint_roughness_r, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform float roughness : hint_range(0.0, 1.0) = 1.0;
|
|
uniform float roughnessOffset : hint_range(-1.0, 1.0) = 0.0;
|
|
|
|
uniform sampler2D texture_metallic : hint_default_black, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform float metallic : hint_range(0.0, 1.0, 0.01) = 1.0;
|
|
uniform float metallicOffset : hint_range(-1.0, 1.0) = 0.0;
|
|
|
|
uniform float specular : hint_range(0.0, 1.0);
|
|
|
|
uniform sampler2D texture_ambient_occlusion : hint_default_white, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform float ao_light_affect : hint_range(0.0, 1.0) = 1.0;
|
|
uniform float ambientOcclusionAmount : hint_range(0.0, 2.0) = 1.0;
|
|
uniform float ambientOcclusionOffset : hint_range(-1.0, 1.0) = 0.0;
|
|
|
|
uniform float rim : hint_range(0.0, 1.0);
|
|
uniform float rim_tint : hint_range(0.0, 1.0);
|
|
|
|
uniform sampler2D texture_emission : source_color, hint_default_black, filter_linear_mipmap_anisotropic, repeat_enable;
|
|
uniform vec4 emission : source_color;
|
|
uniform float emission_energy : hint_range(0.0, 100.0);
|
|
|
|
|
|
uniform vec3 uv1_scale;
|
|
uniform vec3 uv1_offset;
|
|
|
|
void vertex()
|
|
{
|
|
UV = UV * uv1_scale.xy + uv1_offset.xy;
|
|
}
|
|
|
|
void fragment()
|
|
{
|
|
|
|
ALPHA *= sampleAlpha( texture_opacity, texture_albedo, UV, albedo, opacity );
|
|
|
|
#ifdef USE_ALPHA_SCISSOR
|
|
|
|
ALPHA_SCISSOR_THRESHOLD = alphaScissorTreshold;
|
|
|
|
#endif
|
|
|
|
#ifdef USE_ALPHA_DISCARD
|
|
|
|
if ( ALPHA < alphaDiscardTreshold )
|
|
{
|
|
discard;
|
|
}
|
|
|
|
#endif
|
|
|
|
ALBEDO = sampleRGB( texture_albedo, UV, albedo );
|
|
|
|
|
|
METALLIC = sampleRed( texture_metallic, UV, metallic, metallicOffset );
|
|
SPECULAR = specular;
|
|
ROUGHNESS = sampleRed( texture_roughness, UV, roughness, roughnessOffset );
|
|
|
|
NORMAL_MAP = sampleRGB( texture_normal, UV );
|
|
NORMAL_MAP_DEPTH = normal_scale;
|
|
|
|
EMISSION = sampleEmission( texture_emission, UV, emission_energy, emission );
|
|
|
|
RIM = rim;
|
|
RIM_TINT = rim_tint;
|
|
|
|
AO = sampleOcclusion( texture_ambient_occlusion, UV, ambientOcclusionAmount, ambientOcclusionOffset );
|
|
AO_LIGHT_AFFECT = ao_light_affect;
|
|
|
|
}
|