void ShaderMaterial::init() { // m_vertexGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/materials/shaders/gl3/brain.vert")))); // m_vertexGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/materials/shaders/gl3/brain.frag")))); m_vertexGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/materials/shaders/gl3/pervertexphongalpha.vert")))); m_vertexGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/materials/shaders/gl3/pervertexphongalpha.frag")))); m_vertexGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL); m_vertexGL3Technique->graphicsApiFilter()->setMajorVersion(3); m_vertexGL3Technique->graphicsApiFilter()->setMinorVersion(1); m_vertexGL3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile); m_vertexGL3RenderPass->setShaderProgram(m_vertexGL3Shader); QBlendState* pBlendState = new QBlendState(); pBlendState->setSrcRGB(QBlendState::SrcAlpha); pBlendState->setDstRGB(QBlendState::OneMinusSrcAlpha); QCullFace* pCullFace = new QCullFace(); pCullFace->setMode(QCullFace::Back); QDepthTest* pDepthTest = new QDepthTest(); pDepthTest->setFunc(QDepthTest::Less); QDepthMask* pDepthMask = new QDepthMask(); pDepthMask->setMask(true); QBlendEquation* pBlendEquation = new QBlendEquation(); pBlendEquation->setMode(QBlendEquation::FuncAdd); m_vertexGL3RenderPass->addRenderState(pBlendState); m_vertexGL3RenderPass->addRenderState(pCullFace); m_vertexGL3RenderPass->addRenderState(pDepthTest); m_vertexGL3RenderPass->addRenderState(pDepthMask); m_vertexGL3RenderPass->addRenderState(pBlendEquation); m_vertexGL3Technique->addPass(m_vertexGL3RenderPass); m_vertexEffect->addTechnique(m_vertexGL3Technique); m_vertexEffect->addParameter(m_ambientParameter); m_vertexEffect->addParameter(m_diffuseParameter); m_vertexEffect->addParameter(m_specularParameter); m_vertexEffect->addParameter(m_shininessParameter); m_vertexEffect->addParameter(m_alphaParameter); this->setEffect(m_vertexEffect); }
/*! * \internal */ void QSkyboxEntityPrivate::init() { m_gl3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/skybox.vert")))); m_gl3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/skybox.frag")))); m_gl2es2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/skybox.vert")))); m_gl2es2Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/skybox.frag")))); m_gl3Technique->openGLFilter()->setApi(QOpenGLFilter::Desktop); m_gl3Technique->openGLFilter()->setMajorVersion(3); m_gl3Technique->openGLFilter()->setMajorVersion(1); m_gl3Technique->openGLFilter()->setProfile(QOpenGLFilter::Core); m_gl2Technique->openGLFilter()->setApi(QOpenGLFilter::Desktop); m_gl2Technique->openGLFilter()->setMajorVersion(2); m_gl2Technique->openGLFilter()->setMajorVersion(0); m_gl2Technique->openGLFilter()->setProfile(QOpenGLFilter::None); m_es2Technique->openGLFilter()->setApi(QOpenGLFilter::ES); m_es2Technique->openGLFilter()->setMajorVersion(2); m_es2Technique->openGLFilter()->setMajorVersion(0); m_es2Technique->openGLFilter()->setProfile(QOpenGLFilter::None); m_gl3RenderPass->setShaderProgram(m_gl3Shader); m_gl2RenderPass->setShaderProgram(m_gl2es2Shader); m_es2RenderPass->setShaderProgram(m_gl2es2Shader); QCullFace *cullFront = new QCullFace(); cullFront->setMode(QCullFace::Front); QDepthTest *depthTest = new QDepthTest(); depthTest->setFunc(QDepthTest::LessOrEqual); m_gl3RenderPass->addRenderState(cullFront); m_gl3RenderPass->addRenderState(depthTest); m_gl2RenderPass->addRenderState(cullFront); m_gl2RenderPass->addRenderState(depthTest); m_es2RenderPass->addRenderState(cullFront); m_es2RenderPass->addRenderState(depthTest); m_gl3Technique->addPass(m_gl3RenderPass); m_gl2Technique->addPass(m_gl2RenderPass); m_es2Technique->addPass(m_es2RenderPass); m_effect->addTechnique(m_gl3Technique); m_effect->addTechnique(m_gl2Technique); m_effect->addTechnique(m_es2Technique); m_material->setEffect(m_effect); m_material->addParameter(m_textureParameter); m_transform->addTransform(m_translate); m_mesh->setXYMeshResolution(QSize(2, 2)); m_mesh->setXZMeshResolution(QSize(2, 2)); m_mesh->setYZMeshResolution(QSize(2, 2)); m_posXImage->setCubeMapFace(QTextureCubeMap::CubeMapPositiveX); m_posYImage->setCubeMapFace(QTextureCubeMap::CubeMapPositiveY); m_posZImage->setCubeMapFace(QTextureCubeMap::CubeMapPositiveZ); m_negXImage->setCubeMapFace(QTextureCubeMap::CubeMapNegativeX); m_negYImage->setCubeMapFace(QTextureCubeMap::CubeMapNegativeY); m_negZImage->setCubeMapFace(QTextureCubeMap::CubeMapNegativeZ); m_skyboxTexture->setMagnificationFilter(QTextureCubeMap::Linear); m_skyboxTexture->setMinificationFilter(QTextureCubeMap::Linear); m_skyboxTexture->setGenerateMipMaps(false); m_skyboxTexture->setWrapMode(QTextureWrapMode(QTextureWrapMode::ClampToEdge)); m_skyboxTexture->addTextureImage(m_posXImage); m_skyboxTexture->addTextureImage(m_posYImage); m_skyboxTexture->addTextureImage(m_posZImage); m_skyboxTexture->addTextureImage(m_negXImage); m_skyboxTexture->addTextureImage(m_negYImage); m_skyboxTexture->addTextureImage(m_negZImage); q_func()->addComponent(m_mesh); q_func()->addComponent(m_material); q_func()->addComponent(m_transform); }