void LightEffectSoundSolid::tick() { switch(channel) { case LightEffectSoundSolid::Channel::Left: renderColor(spectrumAnalyzer->getLeftSpectrum()); break; case LightEffectSoundSolid::Channel::Center: renderColor(spectrumAnalyzer->getCenterSpectrum()); break; case LightEffectSoundSolid::Channel::Right: renderColor(spectrumAnalyzer->getRightSpectrum()); break; } }
void Draw(GLContext *_context) { UserData *_user = (UserData *)_context->userObject; Size _size = _context->getWinSize(); int width=_size.width; int height=_size.height; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); _user->object->enableObject(); glBindBuffer(GL_ARRAY_BUFFER, _user->vertexBufferId); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), NULL); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float),(void *)( 3 * sizeof(float))); //uniform variable glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, _user->baseMapId); glUniform1i(_user->baseMapLoc, 0); GLVector4 renderColor(1.0f,0.0f,0.0f,1.0f); glUniform4fv(_user->renderColorLoc, 1, (float *)&renderColor); // float angle = _user->angle / 180.0f*3.14159265; float x = sin(_user->angle*0.1367) + cos(_user->angle*0.2377)*0.5f; float y = cos(_user->angle*0.1367) + sin(_user->angle*0.2377)*0.5f; //critical glUniform2f(_user->incLoc,x,y); // glUniform1f(_user->criticalLoc, 4.5f); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); }
void Renderer::renderColor(Mesh *mesh, VectorXd &pose) { Matrix3f rot = Matrix3f::Identity(); Vector3f p(pose(3), pose(4), pose(5)); float angle = p.norm(); if (abs(angle) > 0.0000001) { p.normalize(); Matrix3f skew; skew << 0, -p(2), p(1), p(2), 0, -p(0), -p(1), p(0), 0; rot = rot + sin(angle) * skew; rot = rot + (1.0 - cos(angle)) * skew * skew; } ViewMatrix.topLeftCorner(3,3) = rot; ViewMatrix.topRightCorner(3,1) << pose(0), pose(1), pose(2); renderColor(mesh); }
bool Render::ResizeRenderTargets(int width, int height) { if(m_overdrawColor) { if(m_overdrawColor->m_width == width && m_overdrawColor->m_height == height) { return true; // success but nothing is true I guess } } m_bufferWidth = width; m_bufferHeight = height; UpdateViewHeightFromBuffer(); DEL_NULL(m_overdrawColor); //DEL_NULL(m_overdrawDepth); DEL_NULL(m_renderColor); DEL_NULL(m_renderDepth); if(!m_multiPass || width == 0 || height == 0) return true; // don't need any of these unless it's multipass std::unique_ptr<Texture> colorOverdraw(new Texture()); if(!colorOverdraw->CreateColorTarget(width, height)) return false; //std::unique_ptr<Texture> depthOverdraw(new Texture()); //if(!depthOverdraw->CreateDepthTarget(width, height)) // return false; std::unique_ptr<Texture> renderColor(new Texture()); if(!renderColor->CreateColorTarget(width, height)) return false; std::unique_ptr<Texture> renderDepth(new Texture()); if(!renderDepth->CreateDepthTarget(width, height)) return false; m_overdrawColor = colorOverdraw.release(); //m_overdrawDepth = depthOverdraw.release(); m_renderColor = renderColor.release(); m_renderDepth = renderDepth.release(); return true; }
void Stage::forwardRender(void) { initForwardRendering(); renderDepth(); //in forward rendering the scene is rendered for each light and blended together for (unsigned int i = 0; i < m_lights.size(); ++i) { initLightRendering(); Camera shadowMapCamera; BaseShadowMap* baseShadowMap = 0; ShaderProgram* finalShader = 0; if (m_lights[i]->getType() == LightTypes::PointLight) { if (m_lights[i]->shadow != Shadows::None) baseShadowMap = &m_shadowCubeMap; renderPointLightShadowMap(m_lights[i], &shadowMapCamera); finalShader = getCorrectPointLightShadowShader(m_lights[i]); } else if (m_lights[i]->getType() == LightTypes::DirectionalLight) { if (m_lights[i]->shadow != Shadows::None) baseShadowMap = &m_shadowMap; renderDirectionalLightShadowMap(m_lights[i], &shadowMapCamera); finalShader = getCorrectDirectionalLightShadowShader(m_lights[i]); } renderColor(m_lights[i], i, finalShader, &shadowMapCamera, baseShadowMap); } }
void Renderer::renderColor(Mesh *mesh, Matrix4f &pose) { mesh->ModelMatrix = pose; renderColor(mesh); }