diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/AfflictionLib.glsllib b/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/AfflictionLib.glsllib deleted file mode 100644 index 285263947c..0000000000 --- a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/AfflictionLib.glsllib +++ /dev/null @@ -1,343 +0,0 @@ -#import "Common/ShaderLib/NoiseLib.glsllib" - -//code for tri-planar mapping on any afflicted shaders -vec4 getTriPlanarBlend(in vec4 coords, in vec3 blending, in sampler2D map, in float scale) { - vec4 col1 = texture2D( map, coords.yz * scale); - vec4 col2 = texture2D( map, coords.xz * scale); - vec4 col3 = texture2D( map, coords.xy * scale); - // blend the results of the 3 planar projections. - vec4 tex = col1 * blending.x + col2 * blending.y + col3 * blending.z; - - return tex; -} - -vec4 getTriPlanarBlendFromTexArray(in vec4 coords, in vec3 blending, in int idInTexArray, in float scale, in sampler2DArray texArray) { - vec4 col1 = texture2DArray( texArray, vec3((coords.yz * scale), idInTexArray ) ); - vec4 col2 = texture2DArray( texArray, vec3((coords.xz * scale), idInTexArray ) ); - vec4 col3 = texture2DArray( texArray, vec3((coords.xy * scale), idInTexArray ) ); - // blend the results of the 3 planar projections. - vec4 tex = col1 * blending.x + col2 * blending.y + col3 * blending.z; - - return tex; -} - - -//used for mixing normal map normals with the world normals. texture slots without a normal map use wNormal as their blending value instead -vec3 calculateTangentsAndApplyToNormals(in vec3 normalIn, in vec3 worldNorm){ - - - vec3 returnNorm = normalize((normalIn.xyz * vec3(2.0) - vec3(1.0))); - - - vec3 baseNorm = worldNorm.rgb + vec3(0, 0, 1); - returnNorm *= vec3(-1, -1, 1); - returnNorm = baseNorm.rgb*dot(baseNorm.rgb, returnNorm.rgb)/baseNorm.z - returnNorm.rgb; - - returnNorm = normalize(returnNorm); - - - return returnNorm; -} - - -vec4 desaturate(vec4 albedo, float deathVar){ - - vec3 gray = vec3(dot(vec3(0.2126,0.7152,0.0722), albedo.rgb)); - albedo = vec4(mix(albedo.rgb, gray, deathVar), 0.0); - - return albedo; -} - -//methods for terrains - vec3 alterLiveliness(vec3 color, float liveVal, int mode){ - - float deathVar = (1.0 - (liveVal)); - -//0 means dont scale to be desaturated (bricks, stones, etc) - if(mode > 0){ //1 means almost fully desaturated.. 1 is less alive, and 2 is slightly less, etc etc - deathVar -= mode * 0.033; - - deathVar = max(0.0, deathVar); - deathVar = min(0.99, deathVar); - - float hueVar = (deathVar) * 0.34; - color.r += color.r*hueVar * 1.8; - color.g -= color.g*hueVar; - color.b -= color.b*hueVar*5.0 ; - - - color = desaturate(vec4(color, 1.0), deathVar).rgb; - - } - - - - return color; - - } - - - vec3 alterLiveliness(vec3 color, float livelinessValue){ - //change hue - - float deathVar = (1.0 - (livelinessValue)); - - float hueVar = (deathVar) * 0.34; - color.r += color.r*hueVar * 1.8; - color.g -= color.g*hueVar; - color.b -= color.b*hueVar*5.0 ; - - - color = desaturate(vec4(color, 1.0), deathVar).rgb; - - - return color; - } - - -//methods for death and afflictionness applied to all other types of affliction shaders - - -vec4 alterBarkLiveliness(vec4 albedo, float livelinessValue){ - float deathVar = 1.0 - livelinessValue; - - float hueVar = (deathVar) * 0.97; - albedo.r += albedo.r*hueVar * 0.21; - albedo.g += albedo.g*hueVar*0.84; - albedo.b -= albedo.b*hueVar*1.9; - - albedo *= 0.1 + (0.9 * livelinessValue); - - return albedo; -} - -vec4 alterPlantLiveliness(vec4 albedo, float livelinessValue){ - float deathVar = 1.0 - livelinessValue; - - float hueVar = (deathVar) * 0.77; - albedo.r += albedo.r*hueVar * 1.8; - albedo.g -= albedo.g*hueVar; - albedo.b -= albedo.b*hueVar*5.0 ; - - return albedo; -} - -vec4 alterStoneLiveliness(vec4 albedo, float livelinessValue){ - livelinessValue = 0.56 + (0.44 * livelinessValue); //stone and rock has an 80% minimum, and scales up from there - - float deathVar = 1.0 - livelinessValue; - - - float hueVar = (deathVar); - albedo.r += albedo.r*hueVar * 1.2; - albedo.g += albedo.g*hueVar; - albedo.b -= albedo.b*hueVar*3.14 ; - - albedo = desaturate(albedo, deathVar * 1.7); - - - - return albedo; -} - - - -//AFFLICTION METHODS - -//adjusts the affliction value for the best visual representation (since 0.0 - 1.0 is not as visually linear as it is numerically) -float getAdjustedAfflictionVar(float afflictionVar){ - - float adjustedVar = afflictionVar; - if(afflictionVar > 0.02){ - adjustedVar = mix(0.02, 0.53, afflictionVar); - } - else{ - adjustedVar = 0; - } - - return adjustedVar; -} - -float getAfflictionEdgeTaper(float noiseVar, float afflictionVar){ - - float amt = noiseVar - (0.4 * afflictionVar) - .04; - - if(amt <= 0.05){ - amt = 0.05; - } - - - return amt; -} - -vec4 alterAfflictionColor(float afflictionVar, vec4 albedo, vec4 afflictionAlbedo, float noiseVar){ - - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - - if(afflictionVar >= noiseVar){ - float albedoOpacity = min((afflictionVar * 0.2) + 0.8 , 1.0); - albedo.rgba = mix(albedo.rgba, afflictionAlbedo.rgba, albedoOpacity); - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - - - albedo.rgba = mix(afflictionAlbedo.rgba, albedo.rgba, edgeDiff); - } - else{ - - albedo.rgba = mix(albedo.rgba, afflictionAlbedo.rgba, afflictionVar); - } - - - return albedo; -} -vec4 alterAfflictionGlow(float afflictionVar, vec4 emissive, vec4 afflictionGlowColor, float noiseVar){ - - - emissive = mix(emissive, afflictionGlowColor, afflictionVar); - - return emissive; -} - -float alterAfflictionEmissiveIntensity(float afflictionVar, float emissiveIntensity, float afflictionEmissiveIntensity, float noiseVar){ - - - emissiveIntensity = mix(emissiveIntensity, afflictionEmissiveIntensity, afflictionVar); - - return emissiveIntensity; -} - -vec3 alterAfflictionNormals(float afflictionVar, vec3 normal, vec3 afflictionNormal, float noiseVar){ - - vec3 originalNorm = normal; - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - - if(afflictionVar >= noiseVar){ - normal = afflictionNormal; - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - normal = mix(afflictionNormal, normal, edgeDiff); - } - else{ - normal = mix(normal, afflictionNormal, afflictionVar); - } - - - return normalize(normal); -} - -vec3 alterAfflictionNormalsForTerrain(float afflictionVar, vec3 normal, vec3 afflictionNormal, float noiseVar, vec3 worldNorm){ - - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - - - vec3 blendedNormal = normal; - - float blendValue = afflictionVar; - - if(afflictionVar >= noiseVar){ - blendValue = 1.0; - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - - blendValue = edgeDiff; - - } - else{ - float blendAmt = noiseVar * afflictionVar; - blendAmt = max(0.0, blendAmt); - blendAmt = min(1.0, blendAmt); - - blendValue = blendAmt; - - } - - - afflictionNormal = calculateTangentsAndApplyToNormals(afflictionNormal, worldNorm); - blendedNormal = mix(normal, afflictionNormal, blendValue); - - return blendedNormal; -} - -vec3 alterAfflictionAo(float afflictionVar, vec3 ao, vec3 afflictionAo, float noiseVar){ - - - - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - - if(afflictionVar >= noiseVar){ - ao = afflictionAo; - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - - ao = mix(afflictionAo, ao, edgeDiff); - } - else{ - ao = mix(ao, afflictionAo, afflictionVar); - } - - return ao; -} - -float alterAfflictionRoughness(float afflictionVar, float originalRoughness, float afflictionRoughness, float noiseVar){ - - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - if(afflictionVar >= noiseVar){ - originalRoughness = afflictionRoughness; - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - - originalRoughness = mix(afflictionRoughness, originalRoughness, edgeDiff); - } - - - originalRoughness = min(originalRoughness, 1.0); - - - return originalRoughness; -} - -float alterAfflictionMetallic(float afflictionVar, float originalMetallic, float afflictionMetallic, float noiseVar){ - - - - - - float edgeTaper = getAfflictionEdgeTaper(noiseVar, afflictionVar); - if(afflictionVar >= noiseVar){ - originalMetallic = afflictionMetallic; - } - else if(afflictionVar > edgeTaper){ - float edgeDiff = noiseVar - afflictionVar; - edgeDiff = edgeDiff / afflictionVar; - - originalMetallic = mix(afflictionMetallic, originalMetallic, edgeDiff); - } - - - originalMetallic = min(originalMetallic, 1.0); - return originalMetallic; -} - - - - - - - -