rj-action-library/Runtime/Reallusion/Shaders/CCEye.gdshader

42 lines
1.3 KiB
Plaintext

// NOTE: Shader automatically converted from Godot Engine 4.4.stable.mono's StandardMaterial3D.
shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx;
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc"
uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable;
uniform sampler2D texture_normal : hint_roughness_normal, filter_linear_mipmap, repeat_enable;
uniform float normal_scale : hint_range(0, 2) = 0.1;
uniform float roughness : hint_range(0, 1) = 0.2;
uniform float irisRange : hint_range(0.1, 10) = 5;
uniform float irisPower : hint_range(0.1, 10) = 5;
uniform float irisScale:hint_range(0.01,2.0) = 1;
//void vertex()
//{
//UV = scale( UV, vec2(0.5), vec2(uvScale) );
//}
void fragment()
{
vec2 base_uv = UV;
float d = ( irisRange * length( UV - vec2( 0.5, 0.5 ) ) ) / length( vec2( 0.5, 0.5 ) );
d = clamp( d, 0, 1 );
d = pow( d, irisPower );
base_uv = mix( UV, scale( UV, vec2(0.5), vec2(2.0 - irisScale) ), 1.0 - d);
vec4 albedo_tex = texture(texture_albedo, base_uv);
ALBEDO = albedo_tex.rgb;
//ALBEDO = vec3( d );
ROUGHNESS = mix( roughness, 1, d );
NORMAL_MAP = texture(texture_normal, base_uv).rgb;
//ALBEDO = normalize( vec3( UV.rg*0.5, 1) );
NORMAL_MAP_DEPTH = normal_scale;
}