rj-action-library/Runtime/Reallusion/Shaders/CCPBROpacityBase.gdshaderinc

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