void lb::LightSystem::ConfigureShader( const ofShader& _shader ) const { _shader.begin(); _shader.bindUniformBlock( m_pointLightUboBinding, "LightBlock" ); _shader.setUniform1i( "uLightPointerTex", m_lightPointerTexUnit ); _shader.setUniform1i( "uLightIndexTex", m_lightIndexTexUnit ); _shader.end(); }
//--------------------------------------------------------------- ACTIONS void CloudsRGBDVideoPlayer::setupProjectionUniforms(ofShader& shader){ if(!getPlayer().isLoaded()){ ofLogWarning() << " CloudsRGBDVideoPlayer::setupProjectionUniforms -- player is not ready"; return; } shader.setUniformTexture("rgbdTexture", getPlayer().getTextureReference(), 0); shader.setUniform2f("textureSize", getPlayer().getWidth(), getPlayer().getHeight()); shader.setUniform4f("colorRect", colorRect.x, colorRect.y, colorRect.width, colorRect.height); shader.setUniform2f("colorScale", colorScale.x, colorScale.y); shader.setUniform2f("colorFOV", colorFOV.x, colorFOV.y ); shader.setUniform2f("colorPP", colorPrincipalPoint.x, colorPrincipalPoint.y); shader.setUniform3f("dK", distortionK.x, distortionK.y, distortionK.z); shader.setUniform2f("dP", distortionP.x, distortionP.y); ofMatrix4x4 adjustmentMatrix; adjustmentMatrix.rotate(adjustRotate.x, 0, 1, 0); adjustmentMatrix.rotate(adjustRotate.y, 1, 0, 0); adjustmentMatrix.translate(adjustTranslate.x, adjustTranslate.y, adjustTranslate.z); shader.setUniformMatrix4f("extrinsics", extrinsics * adjustmentMatrix ); shader.setUniform4f("depthRect", depthRect.x, depthRect.y, depthRect.width, depthRect.height); shader.setUniform2f("depthPP", depthPrincipalPoint.x, depthPrincipalPoint.y); shader.setUniform2f("depthFOV", depthFOV.x, depthFOV.y); shader.setUniform4f("normalRect", normalRect.x, normalRect.y, normalRect.width, normalRect.height); shader.setUniform4f("faceFeatureRect", faceFeatureRect.x, faceFeatureRect.y, faceFeatureRect.width, faceFeatureRect.height); shader.setUniform4f("deltaChangeRect", deltaChangeRect.x, deltaChangeRect.y, deltaChangeRect.width, deltaChangeRect.height); shader.setUniform1i("useFaces", useFaces ? 1 : 0); shader.setUniform1f("flowPosition", flowPosition); shader.setUniform1f("farClip", farClip); shader.setUniform1f("nearClip", nearClip); shader.setUniform1f("edgeClip", edgeClip); shader.setUniform1f("minDepth", minDepth); shader.setUniform1f("maxDepth", maxDepth); }
void ofMaterial::updateMaterial(const ofShader & shader,ofGLProgrammableRenderer & renderer) const{ shader.setUniform4fv("mat_ambient", &data.ambient.r); shader.setUniform4fv("mat_diffuse", &data.diffuse.r); shader.setUniform4fv("mat_specular", &data.specular.r); shader.setUniform4fv("mat_emissive", &data.emissive.r); shader.setUniform4fv("global_ambient", &ofGetGlobalAmbientColor().r); shader.setUniform1f("mat_shininess",data.shininess); for(auto & uniform: uniforms1f){ shader.setUniform1f(uniform.first, uniform.second); } for (auto & uniform : uniforms2f) { shader.setUniform2f(uniform.first, uniform.second); } for (auto & uniform : uniforms3f) { shader.setUniform3f(uniform.first, uniform.second); } for (auto & uniform : uniforms4f) { shader.setUniform4f(uniform.first, uniform.second); } for (auto & uniform : uniforms1i) { shader.setUniform1i(uniform.first, uniform.second); } for (auto & uniform : uniforms2i) { shader.setUniform2i(uniform.first, uniform.second.x, uniform.second.y); } for (auto & uniform : uniforms3i) { shader.setUniform3i(uniform.first, uniform.second.x, uniform.second.y, uniform.second.z); } for (auto & uniform : uniforms4i) { shader.setUniform4i(uniform.first, uniform.second.x, uniform.second.y, uniform.second.z, uniform.second.w); } for (auto & uniform : uniforms4m) { shader.setUniformMatrix4f(uniform.first, uniform.second); } for (auto & uniform : uniforms3m) { shader.setUniformMatrix3f(uniform.first, uniform.second); } for (auto & uniform : uniformstex) { shader.setUniformTexture(uniform.first, uniform.second.textureTarget, uniform.second.textureID, uniform.second.textureLocation); } }
void BGNode::drawFace(ofShader & mEyeShader) { /* int n = neighbours.size(); ofVec2f toVector(1,0); if(n > 0) toVector = (neighbours[0]->position - position).normalize(); ofVec2f perpVec(-toVector.y, toVector.x); */ ofSetColor(255); float offset = .05 * nodeRadius; float perpOffset = .6 * nodeRadius; float eyeRadius = .6 * nodeRadius; ofVec2f toVector = mSurfaceNormal; ofVec2f perpVec(-toVector.y, toVector.x); ofVec2f goalPos = position; if(neighbours.size() > 0) goalPos = neighbours[0]->position; float texFactor = .6 * nodeRadius; for(int i=0; i<2; ++i) { int factor = i == 0 ? 1 : -1; ofVec2f pos = position + toVector * offset + factor * perpVec * perpOffset; ofMesh eyeMesh; eyeMesh.setMode(OF_PRIMITIVE_TRIANGLE_STRIP); for(int j=0; j<4; ++j) { ofVec2f texPos(j % 2, j / 2); ofVec2f vPos = pos + (texPos.x - .5) * texFactor * perpVec + (texPos.y - .5) * texFactor * toVector; eyeMesh.addVertex(ofVec3f(vPos.x, vPos.y, 0)); eyeMesh.addTexCoord(texPos); } ofVec2f goalPos = position; if(neighbours.size() > 0) goalPos = neighbours[0]->position; ofVec2f toGoal = goalPos - pos; float toGoalLength = toGoal.length(); ofVec2f pupilPos = pos; if(toGoalLength > 0.01) pupilPos = pos + .25 * eyeRadius / toGoalLength * toGoal; mEyeShader.begin(); mEyeShader.setUniform2f("uCenter", pos.x, pos.y); mEyeShader.setUniform2f("uFocusPoint", goalPos.x, goalPos.y); mEyeShader.setUniform2f("uPupilLoc", pupilPos.x, pupilPos.y); mEyeShader.setUniform1i("uFlipHorizontally", i > 0); eyeMesh.draw(); mEyeShader.end(); } ofMesh mouthMesh; mouthMesh.setMode(OF_PRIMITIVE_TRIANGLE_STRIP); for(int i=0; i<21; ++i) { float t = i / 20.0; float x = .6 * (t - .5) * nodeRadius; float yVar = 2 * abs(t - .5); float y = (-yVar * yVar * (1 - yVar) * .6 - .3) * nodeRadius; for(int it=0; it<2; ++it) { mouthMesh.addVertex(position + y * toVector + x * perpVec); mouthMesh.addColor(ofColor(0)); y -= 3; } } mouthMesh.draw(); }