@@ -80,13 +80,13 @@ enum ClampMode
|
|
80
80
|
|
81
81
|
FboInfo shadowMapFB;
|
82
82
|
int shadowMapResolution = 1024;
|
83
|
-
int shadowMapClampMode = ClampMode::
|
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 =
|
89
|
-
float polygonOffset_units =
|
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);
|