// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #include "SimpleTexturedShader.hpp" #include "scene/components/display/MeshRenderer.hpp" #include "scene/components/display/Camera.hpp" using namespace Dawn; void SimpleTexturedShader::compile() { this->program.compile(); } std::vector SimpleTexturedShader::getPassItems( Mesh *mesh, Material *material, Camera *camera ) { SimpleTexturedMaterial *simpleMaterial = dynamic_cast(material); assertNotNull(simpleMaterial); struct ShaderPassItem onlyPass; onlyPass.mesh = mesh; onlyPass.shaderProgram = &program; onlyPass.colorValues[program.paramColor] = simpleMaterial->color; onlyPass.matrixValues[program.paramModel] = material->transform->getWorldTransform(); onlyPass.matrixValues[program.paramView] = camera->transform->getWorldTransform(); onlyPass.matrixValues[program.paramProjection] = camera->projection; onlyPass.renderFlags = ( RENDER_MANAGER_RENDER_FLAG_BLEND | RENDER_MANAGER_RENDER_FLAG_DEPTH_TEST ); if(simpleMaterial->texture != nullptr) { onlyPass.boolValues[program.paramHasTexture] = true; onlyPass.textureSlots[0] = simpleMaterial->texture; onlyPass.textureValues[program.paramTexture] = 0; } else { onlyPass.boolValues[program.paramHasTexture] = false; } std::vector passes; passes.push_back(onlyPass); return passes; }