#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; }