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