void CreateTailorScene() { // Load shaders try { ref_ptr<Shader> tailorShader( CreateShaderFromFile(device, Shader::FRAGMENT, "data/Shaders/tailor.frag" ASSET_MANAGER) ); if (!tailorShader) { throw std::runtime_error("Shader file not loaded"); } tailorProgram.reset( device->CreateProgram() ); tailorProgram->AddShader( transformShader.get() ); tailorProgram->AddShader( tailorShader.get() ); if ( SGL_OK != tailorProgram->Dirty() ) { throw std::runtime_error("Shader program not compiled"); } tailorUniformMVP = tailorProgram->GetUniform4x4F("modelViewProjectionMatrix"); tailorColorUniform = tailorProgram->GetUniform4F("color"); tailorUniformA = tailorProgram->GetUniformF("a"); tailorUniformB = tailorProgram->GetUniformF("b"); tailorUniformC = tailorProgram->GetUniformF("c"); tailorUniformDensity = tailorProgram->GetUniformF("density"); assert( tailorUniformA ); assert( tailorUniformB ); assert( tailorUniformC ); assert( tailorUniformDensity ); int posLoc = tailorProgram->AttributeLocation("vp_position"); VertexLayout::ELEMENT elements[] = { {posLoc, 2, 0, 8, FLOAT, VertexLayout::ATTRIBUTE}, }; vertexLayout.reset( device->CreateVertexLayout(1, elements) ); //tailorUniformA->SetValue(-0.7); //tailorUniformB->SetValue(0.5); } catch(std::runtime_error& err) { LOGE(err.what()); } }