49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|   | shader_type spatial; | ||
|  | render_mode blend_mix,depth_draw_opaque,cull_disabled, unshaded; | ||
|  | uniform vec4 albedo_color : source_color; | ||
|  | uniform sampler2D albedo_texture : source_color; | ||
|  | uniform sampler2D normal_texture : source_color; | ||
|  | 
 | ||
|  | uniform bool use_normalmap = false; | ||
|  | uniform bool use_alpha_texture = false; | ||
|  | 
 | ||
|  | uniform float alpha_scissor_threshold :  hint_range(0,1); | ||
|  | uniform float normal_scale :  hint_range(-5,5) = 1.0; | ||
|  | 
 | ||
|  | uniform vec3 uv1_scale; | ||
|  | uniform vec3 uv1_offset; | ||
|  | 
 | ||
|  | 
 | ||
|  | void vertex() | ||
|  | { | ||
|  | 	UV = UV * uv1_scale.xy + uv1_offset.xy; | ||
|  | } | ||
|  | 
 | ||
|  | void fragment() | ||
|  | { | ||
|  | 	vec2 base_uv = UV; | ||
|  | 	vec4 albedo = texture( albedo_texture, base_uv ) * albedo_color; | ||
|  | 	vec4 normal_tex = texture( normal_texture, base_uv ); | ||
|  | 	 | ||
|  |   // 0.5 + -1.0 == -1.0 + 0.5 | ||
|  | 	//ALBEDO = vec3(1.0 - NORMAL.y, 1.0 - NORMAL.x, - NORMAL.z)* 0.5; | ||
|  | 
 | ||
|  | 	if ( use_normalmap ) | ||
|  | 	{ | ||
|  | 		vec3 normalmap; | ||
|  | 		normalmap.xy = normal_tex.xy * 2.0 - 1.0; | ||
|  | 		normalmap.z = sqrt(max(0.0, 1.0 - dot(normalmap.xy, normalmap.xy))); | ||
|  | 		NORMAL = normalize(mix(NORMAL, TANGENT * normalmap.x + BINORMAL * normalmap.y + NORMAL * normalmap.z, normal_scale)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	ALBEDO = vec3( -NORMAL.x, NORMAL.y, -NORMAL.z) * 0.5 + 0.5; | ||
|  | 
 | ||
|  | 	if ( use_alpha_texture ) | ||
|  | 	{ | ||
|  | 		ALPHA = albedo.a; | ||
|  | 		ALPHA_SCISSOR_THRESHOLD = alpha_scissor_threshold; | ||
|  | 	} | ||
|  | 
 | ||
|  | } |