This file is indexed.

/usr/src/castle-game-engine-4.1.1/x3d/opengl/glsl/shadow_map_common.fs.inc is in castle-game-engine-src 4.1.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
{ -*- buffer-read-only: t -*- }
{ DON'T EDIT -- this file was automatically generated from "shadow_map_common.fs" }
'/* Define exactly one of PCF* symbols, or none (to not use any PCF).' + LineEnding + 
'   This is defined (or not) when including this shader in Pascal code,' + LineEnding + 
'   automatically. */' + LineEnding + 
'//#define PCF4' + LineEnding + 
'//#define PCF4_BILINEAR' + LineEnding + 
'//#define PCF16' + LineEnding + 
'' + LineEnding + 
'float shadow(sampler2DShadow shadowMap, const vec4 shadowMapCoord,' + LineEnding + 
'  const in float size)' + LineEnding + 
'{' + LineEnding + 
'  /* Avoid back-projecting shadows. */' + LineEnding + 
'  if (shadowMapCoord.z < 0.0) return 0.0;' + LineEnding + 
'' + LineEnding + 
'  /* When coord2 is outside (0, 0) - (1, 1) square,' + LineEnding + 
'     it''s always in the shadow. Otherwise shadows would be stretched' + LineEnding + 
'     over whole scene, due to clamping. */' + LineEnding + 
'  vec2 coord2 = shadowMapCoord.st / shadowMapCoord.q;' + LineEnding + 
'  if (coord2.s < 0.0 || coord2.s > 1.0 ||' + LineEnding + 
'      coord2.t < 0.0 || coord2.t > 1.0)' + LineEnding + 
'    return 0.0;' + LineEnding + 
'' + LineEnding + 
'#ifdef PCF4_BILINEAR' + LineEnding + 
'' + LineEnding + 
'  /* We have to scale up/down by texture size to make the floor/fract' + LineEnding + 
'     perform real bilinear filtering.' + LineEnding + 
'     This also means that we have to handle xy and z separately. */' + LineEnding + 
'  vec2 tc_full = size * coord2;' + LineEnding + 
'  float z = shadowMapCoord.z / shadowMapCoord.w;' + LineEnding + 
'' + LineEnding + 
'  vec2 tc = floor(tc_full.xy);' + LineEnding + 
'  vec2 f = fract(tc_full.xy);' + LineEnding + 
'  vec2 f1 = vec2(1.0, 1.0) - f;' + LineEnding + 
'' + LineEnding + 
'  return' + LineEnding + 
'    shadow2D(shadowMap, vec3( tc.x        / size,  tc.y        / size, z)).r * f1.x * f1.y +' + LineEnding + 
'    shadow2D(shadowMap, vec3( tc.x        / size, (tc.y + 1.0) / size, z)).r * f1.x *  f.y +' + LineEnding + 
'    shadow2D(shadowMap, vec3((tc.x + 1.0) / size,  tc.y        / size, z)).r *  f.x * f1.y +' + LineEnding + 
'    shadow2D(shadowMap, vec3((tc.x + 1.0) / size, (tc.y + 1.0) / size, z)).r *  f.x *  f.y;' + LineEnding + 
'' + LineEnding + 
'#elif defined(PCF4)' + LineEnding + 
'' + LineEnding + 
'  /* PCF with 2x2 kernel */' + LineEnding + 
'  float offset = shadowMapCoord.w / size;' + LineEnding + 
'  return (' + LineEnding + 
'    shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset, -offset, 0.0, 0.0)).r +' + LineEnding + 
'    shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset,  offset, 0.0, 0.0)).r +' + LineEnding + 
'    shadow2DProj(shadowMap, shadowMapCoord + vec4( offset,  offset, 0.0, 0.0)).r +' + LineEnding + 
'    shadow2DProj(shadowMap, shadowMapCoord + vec4( offset, -offset, 0.0, 0.0)).r' + LineEnding + 
'    ) / 4.0;' + LineEnding + 
'' + LineEnding + 
'#elif defined(PCF16)' + LineEnding + 
'' + LineEnding + 
'  float offset = shadowMapCoord.w / size;' + LineEnding + 
'  return' + LineEnding + 
'    (' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 1.5, -offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 1.5, -offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 0.5, -offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 0.5, -offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 1.5,  offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 1.5,  offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 0.5,  offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4(-offset * 0.5,  offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 1.5,  offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 1.5,  offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 0.5,  offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 0.5,  offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 1.5, -offset * 1.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 1.5, -offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 0.5, -offset * 0.5, 0.0, 0.0)).r +' + LineEnding + 
'      shadow2DProj(shadowMap, shadowMapCoord + vec4( offset * 0.5, -offset * 1.5, 0.0, 0.0)).r' + LineEnding + 
'    )' + LineEnding + 
'    / 16.0;' + LineEnding + 
'#else' + LineEnding + 
'  /* No PCF */' + LineEnding + 
'  return shadow2DProj(shadowMap, shadowMapCoord).r;' + LineEnding + 
'#endif' + LineEnding + 
'' + LineEnding + 
'}' + LineEnding + 
'' + LineEnding + 
'/* Debug function, to display depth (distances) of the texture directly.' + LineEnding + 
'' + LineEnding + 
'   Note that you have to use compareMode "NONE" inside GeneratedShadowMap' + LineEnding + 
'   (otherwise getting it as sampler2D may not be sensible, depends on GPU;' + LineEnding + 
'   Looks like Radeon tolerated any compareMode, but NVidia requires "NONE".).' + LineEnding + 
'*/' + LineEnding + 
'float shadow_depth(sampler2D shadowMap, const vec4 shadowMapCoord)' + LineEnding + 
'{' + LineEnding + 
'  /* Avoid back-projecting shadows. */' + LineEnding + 
'  if (shadowMapCoord.z < 0.0) return 0.0;' + LineEnding + 
'' + LineEnding + 
'  vec2 coord2 = shadowMapCoord.st / shadowMapCoord.q;' + LineEnding + 
'' + LineEnding + 
'  /* When coord2 is outside (0, 0) - (1, 1) square, set d = 0.' + LineEnding + 
'     Otherwise texture would be visible stretched due to clamping. */' + LineEnding + 
'  if (coord2.s < 0.0 || coord2.s > 1.0 ||' + LineEnding + 
'      coord2.t < 0.0 || coord2.t > 1.0)' + LineEnding + 
'    return 0.0; else' + LineEnding + 
'    return texture2D(shadowMap, coord2).z;' + LineEnding + 
'' + LineEnding + 
'  // d = pow(d, 4.0); // makes shadows a little more contrasting' + LineEnding + 
'}' + LineEnding + 
''