mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-03 08:56:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
#include "core.h"
 | 
						|
 | 
						|
#define DAMPING 0.95
 | 
						|
 | 
						|
#include "watersim_common.h"
 | 
						|
 | 
						|
    SH_BEGIN_PROGRAM
 | 
						|
        shInput(float2, UV)
 | 
						|
        shSampler2D(heightPrevSampler)
 | 
						|
        shSampler2D(heightCurrentSampler)
 | 
						|
        shUniform(float3, previousFrameOffset) @shSharedParameter(previousFrameOffset, previousFrameOffset)
 | 
						|
        shUniform(float3, currentFrameOffset) @shSharedParameter(currentFrameOffset, currentFrameOffset)
 | 
						|
        shUniform(float4, rippleTextureSize) @shSharedParameter(rippleTextureSize, rippleTextureSize)
 | 
						|
 | 
						|
    SH_START_PROGRAM
 | 
						|
    {
 | 
						|
#if !SH_HLSL
 | 
						|
		const float3 offset[4] = float3[4](
 | 
						|
			float3(-1.0, 0.0, 0.25),
 | 
						|
			float3( 1.0, 0.0, 0.25),
 | 
						|
			float3( 0.0,-1.0, 0.25),
 | 
						|
			float3( 0.0, 1.0, 0.25)
 | 
						|
		);	
 | 
						|
#else
 | 
						|
                const float3 offset[4] = {
 | 
						|
                    float3(-1.0, 0.0, 0.25),
 | 
						|
                    float3( 1.0, 0.0, 0.25),
 | 
						|
                    float3( 0.0,-1.0, 0.25),
 | 
						|
                    float3( 0.0, 1.0, 0.25)
 | 
						|
                    };
 | 
						|
#endif
 | 
						|
 | 
						|
                float fHeightPrev = DecodeHeightmap(heightPrevSampler, UV.xy + previousFrameOffset.xy + currentFrameOffset.xy);
 | 
						|
		
 | 
						|
		float fNeighCurrent = 0;
 | 
						|
		for ( int i=0; i<4; i++ )
 | 
						|
		{
 | 
						|
                        float2 vTexcoord = UV + currentFrameOffset.xy + offset[i].xy * rippleTextureSize.xy;
 | 
						|
			fNeighCurrent += (DecodeHeightmap(heightCurrentSampler, vTexcoord) * offset[i].z);
 | 
						|
		}
 | 
						|
		
 | 
						|
		float fHeight = fNeighCurrent * 2.0 - fHeightPrev;
 | 
						|
		
 | 
						|
		fHeight *= DAMPING;
 | 
						|
		
 | 
						|
		shOutputColour(0) = EncodeHeightmap(fHeight);
 | 
						|
    }
 | 
						|
    
 | 
						|
    
 | 
						|
    
 | 
						|
    
 |