48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|   | // NOTE: Shader automatically converted from Godot Engine 4.4.stable.mono's StandardMaterial3D. | ||
|  | 
 | ||
|  | shader_type spatial; | ||
|  | render_mode blend_mix, depth_draw_never, cull_back, diffuse_burley, specular_schlick_ggx, depth_test_disabled; | ||
|  | 
 | ||
|  | #include "res://addons/rokojori_action_library/Runtime/Shading/Library/Depth.gdshaderinc" | ||
|  | 
 | ||
|  | uniform vec4 albedo : source_color; | ||
|  | uniform sampler2D albedoTexture : source_color, filter_linear_mipmap, repeat_enable; | ||
|  | uniform sampler2D opacityTexture : source_color, filter_linear_mipmap, repeat_enable; | ||
|  | uniform sampler2D depthTexture: hint_depth_texture; | ||
|  | 
 | ||
|  | uniform vec3 uv1_scale; | ||
|  | uniform vec3 uv1_offset; | ||
|  | 
 | ||
|  | uniform bool checkVisible = false; | ||
|  | uniform float visibilityDistance = 1; | ||
|  | uniform float visibilityDistanceScale = 0.01; | ||
|  | 
 | ||
|  | void vertex()  | ||
|  | { | ||
|  | 	UV = UV * uv1_scale.xy + uv1_offset.xy; | ||
|  | } | ||
|  | 
 | ||
|  | void fragment()  | ||
|  | { | ||
|  |   vec3 viewPosition = VERTEX; | ||
|  |    | ||
|  |   bool visible = isVisibleAt( depthTexture, viewPosition, PROJECTION_MATRIX, INV_PROJECTION_MATRIX ); | ||
|  |    | ||
|  |   if ( checkVisible && ! visible ) | ||
|  |   { | ||
|  |     discard; | ||
|  |   } | ||
|  |    | ||
|  |   vec3 depthViewPosition = getDepthViewPositionAtViewPosition( depthTexture, viewPosition, PROJECTION_MATRIX, INV_PROJECTION_MATRIX ); | ||
|  |   float dist = length( depthViewPosition - viewPosition ); | ||
|  |    | ||
|  |   float dVis = 1.0 - clamp( dist / ( visibilityDistance * visibilityDistanceScale ), 0, 1 ); | ||
|  |    | ||
|  |     | ||
|  | 	vec4 sampledAlbedo = texture( albedoTexture, UV ); | ||
|  |   vec4 sampledOpacity = texture( opacityTexture, UV ); | ||
|  |    | ||
|  | 	ALBEDO = albedo.rgb * sampledAlbedo.rgb; | ||
|  | 	ALPHA *= albedo.a * sampledAlbedo.a * sampledOpacity.r * dVis; | ||
|  | } |