File: vtkShadowMapPassShader_fs.glsl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,972 kB
  • sloc: cpp: 1,442,790; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 68; objc: 17
file content (62 lines) | stat: -rw-r--r-- 2,072 bytes parent folder | download | duplicates (12)
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
// ============================================================================
//
//  Program:   Visualization Toolkit
//  Module:    vtkShadowMapPassShader_fs.glsl
//
//  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
//  All rights reserved.
//  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
//
//     This software is distributed WITHOUT ANY WARRANTY; without even
//     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
//     PURPOSE.  See the above copyright notice for more information.
//
// ============================================================================

// Fragment shader used by the shadow mapping render pass.

#version 110

// NOTE: this shader is concatened on the fly by vtkShadowMapPass.cxx by adding
// a line at the beginning like:
// #define VTK_LIGHTING_NUMBER_OF_LIGHTS equal to the number of shadowing
// lights.

uniform sampler2DShadow shadowMaps[VTK_LIGHTING_NUMBER_OF_LIGHTS];
uniform sampler2D spotLightShape;

varying vec4 shadowCoord[VTK_LIGHTING_NUMBER_OF_LIGHTS];
varying vec4 frontColors[VTK_LIGHTING_NUMBER_OF_LIGHTS];

void main(void)
{
  gl_FragColor=vec4(0.0,0.0,0.0,0.0);
  int i=0;
  while(i<VTK_LIGHTING_NUMBER_OF_LIGHTS)
    {
    float factor=0.0;
    if(shadowCoord[i].w>0.0)
      {
      vec2 projected=shadowCoord[i].xy/shadowCoord[i].w;
      if(projected.x>=0.0 && projected.x<=1.0
        && projected.y>=0.0 && projected.y<=1.0)
        {
        factor=shadow2DProj(shadowMaps[i],shadowCoord[i]).x;
        }
      }
    vec4 colorFactor=texture2DProj(spotLightShape,shadowCoord[i])*factor;
    gl_FragColor+=frontColors[i]*colorFactor.x;
//    gl_FragColor+=frontColors[i]*factor;
    ++i;
    }

  gl_FragColor=clamp(gl_FragColor,0.0,1.0);

  // we don't let the prop to execute its fragment shader because it
  // already executed in the previous pass with none shadowing lights.
  //  propFuncFS();

  // gl_FragColor will be blending with framebuffer value containing other
  // lights contributions.
  // use alpha_testing for black/dark color?
}