@@ -72,15 +72,15 @@ void ofApp::draw(){
7272 int numShadowPasses = light.getNumShadowDepthPasses ();
7373 for ( int j = 0 ; j < numShadowPasses; j++ ) {
7474 light.beginShadowDepthPass (j);
75- renderScene ();
75+ renderScene (true );
7676 light.endShadowDepthPass (j);
7777 }
7878 }
7979
8080
8181 camera.begin (); {
8282
83- renderScene ();
83+ renderScene (false );
8484
8585 if ( cubeMap.hasPrefilteredMap () ) {
8686 cubeMap.drawPrefilteredCube (0 .2f );
@@ -108,11 +108,12 @@ void ofApp::draw(){
108108
109109 stringstream ss;
110110 ss << " Reload shader(r): make changes to shader in data/shaders/main.frag and then press 'r' to see changes." ;
111+ ss << endl << " Wiggle verts(w): " << (bWiggleVerts ? " yes" : " no" );
111112 ofDrawBitmapStringHighlight (ss.str (), 40 , 40 );
112113}
113114
114115// --------------------------------------------------------------
115- void ofApp::renderScene () {
116+ void ofApp::renderScene (bool bShadowPass ) {
116117
117118 matFloor.setMetallic (0.0 );
118119 matFloor.setReflectance (0.01 );
@@ -140,7 +141,14 @@ void ofApp::renderScene() {
140141 ofPopMatrix ();
141142 matSphere.end ();
142143
144+ if ( bShadowPass && bWiggleVerts ) {
145+ mDepthShader .begin ();
146+ mDepthShader .setUniform1f (" iElapsedTime" , ofGetElapsedTimef ());
147+ mDepthShader .setUniform1f (" uWiggleVerts" , bWiggleVerts ? 1 .0f : 0 .0f );
148+ }
149+ // setting custom uniforms on a material automatically adds it to the shader
143150 matLogo.setCustomUniform1f (" iElapsedTime" , ofGetElapsedTimef ());
151+ matLogo.setCustomUniform1f (" uWiggleVerts" , bWiggleVerts ? 1 .0f : 0 .0f );
144152 matLogo.begin ();
145153 ofPushMatrix ();
146154 ofTranslate ( -70 , -250 , 0 );
@@ -149,6 +157,9 @@ void ofApp::renderScene() {
149157 meshLogoHollow.draw ();
150158 ofPopMatrix ();
151159 matLogo.end ();
160+ if (bShadowPass && bWiggleVerts ) {
161+ mDepthShader .end ();
162+ }
152163}
153164
154165// --------------------------------------------------------------
@@ -161,6 +172,9 @@ bool ofApp::reloadShader() {
161172 if ( vbuffer.size () && fbuffer.size () ) {
162173 matLogo.setShaderMain (vbuffer.getText (), GL_VERTEX_SHADER, " main.vert" );
163174 matLogo.setShaderMain (fbuffer.getText (), GL_FRAGMENT_SHADER, " main.frag" );
175+ // configure the shader to include shadow functions for passing depth
176+ // declare a define so we can use the same shader file and run different bits of code
177+ light.getShadow ().setupShadowDepthShader (mDepthShader , " #define SHADOW_DEPTH_PASS\n " +vbuffer.getText ());
164178 return true ;
165179 }
166180 return false ;
@@ -174,6 +188,9 @@ void ofApp::keyPressed(int key){
174188 if ( key == ' d' ) {
175189 bDebug = !bDebug;
176190 }
191+ if ( key == ' w' ) {
192+ bWiggleVerts = !bWiggleVerts;
193+ }
177194}
178195
179196// --------------------------------------------------------------
0 commit comments