55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using Godot;
							 | 
						||
| 
								 | 
							
								using System.Reflection;
							 | 
						||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								using System.Linq;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Rokojori
							 | 
						||
| 
								 | 
							
								{ 
							 | 
						||
| 
								 | 
							
								  [Tool]
							 | 
						||
| 
								 | 
							
								  [GlobalClass]
							 | 
						||
| 
								 | 
							
								  public partial class DepthPromixityFading:FadingModifier
							 | 
						||
| 
								 | 
							
								  {     
							 | 
						||
| 
								 | 
							
								    public override List<ShaderCode> GetFadingCode( ShaderGenerationContext context, int offsetIndex, AlphaFadeMode parentFadeMode )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      var alphaFadeMode = GetFadeMode( parentFadeMode );
							 | 
						||
| 
								 | 
							
								      var suffix = GetSuffix( offsetIndex );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if ( context.isIncludesPhase )
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        return IncludeDepthLibrary();
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if ( context.isVariablesPhase )
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        var depthProximityFadeDistanceUniform = Uniform( "depthProximityFadeDistance" + suffix, 0.2f, 0, 1000 ).LineBreak();
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        var list = new List<ShaderCode>()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          BuiltInTextureShaderCode.Depth,
							 | 
						||
| 
								 | 
							
								          ToCode( depthProximityFadeDistanceUniform )
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return list;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if ( context.isFragmentPhase )
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        var code = 
							 | 
						||
| 
								 | 
							
								        $@"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        float depthProximityAlpha{suffix} = getDepthProximityAlpha( depthTexture, 
							 | 
						||
| 
								 | 
							
								                                      SCREEN_UV, INV_PROJECTION_MATRIX, 
							 | 
						||
| 
								 | 
							
								                                      VERTEX.z, depthProximityFadeDistance{suffix} 
							 | 
						||
| 
								 | 
							
								                                    );
							 | 
						||
| 
								 | 
							
								        ";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return ToCode( code.Indent( "  " ) ).Concat(  ToCode( AlphaFade.Fragment( "depthProximityAlpha" + suffix, alphaFadeMode ) ) );
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return [];
							 | 
						||
| 
								 | 
							
								    }    
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |