Solution

Files changed (1) hide show
  1. lab6-shadowmaps/lab6_main.cpp +15 -4
lab6-shadowmaps/lab6_main.cpp CHANGED
@@ -80,13 +80,13 @@ enum ClampMode
80
80
 
81
81
  FboInfo shadowMapFB;
82
82
  int shadowMapResolution = 1024;
83
- int shadowMapClampMode = ClampMode::Edge;
83
+ int shadowMapClampMode = ClampMode::Border;
84
84
  bool shadowMapClampBorderShadowed = false;
85
85
  bool usePolygonOffset = true;
86
86
  bool useSoftFalloff = false;
87
87
  bool useHardwarePCF = false;
88
- float polygonOffset_factor = 6.5f;
89
- float polygonOffset_units = 10000.0f;
88
+ float polygonOffset_factor = 2.0f;
89
+ float polygonOffset_units = 10.0f;
90
90
 
91
91
 
92
92
  ///////////////////////////////////////////////////////////////////////////////
@@ -203,7 +203,6 @@ void initialize()
203
203
  changeScene("Ship");
204
204
  //changeScene("Material Test");
205
205
  //changeScene("Cube");
206
- changeScene("Peter Panning");
207
206
 
208
207
  landingpadModel = labhelper::loadModelFromOBJ("../scenes/landingpad.obj");
209
208
 
@@ -362,6 +361,18 @@ void display(void)
362
361
 
363
362
  glBindTexture(GL_TEXTURE_2D, shadowMapFB.depthBuffer);
364
363
 
364
+ if(shadowMapClampMode == ClampMode::Edge)
365
+ {
366
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
367
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
368
+ }
369
+ else if(shadowMapClampMode == ClampMode::Border)
370
+ {
371
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
372
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
373
+ vec4 border(shadowMapClampBorderShadowed ? 0.f : 1.f);
374
+ glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, &border.x);
375
+ }
365
376
 
366
377
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
367
378
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);