|
|
@@ -65,13 +65,16 @@ std::shared_ptr<ShaderBinding> ShaderPass::getShaderBinding() {
|
|
|
}
|
|
|
|
|
|
|
|
|
-Material::Material(const String& name) : Resource(Resource::RESOURCE_MATERIAL) {
|
|
|
- this->name = name;
|
|
|
- fp16RenderTargets = false;
|
|
|
- blendingMode = Renderer::BLEND_MODE_NORMAL;
|
|
|
- screenMaterial = false;
|
|
|
+Material::Material(const String& name) : Resource(Resource::RESOURCE_MATERIAL), name(name), fp16RenderTargets(false), blendingMode(Renderer::BLEND_MODE_NORMAL), screenMaterial(false)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+Material::Material(const String& name, std::shared_ptr<Shader> shader) : Resource(Resource::RESOURCE_MATERIAL), name(name), fp16RenderTargets(false), blendingMode(Renderer::BLEND_MODE_NORMAL), screenMaterial(false)
|
|
|
+{
|
|
|
+ addShaderPassForShader(shader);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
Material::~Material() {
|
|
|
|
|
|
Logger::log("deleting material (%s)\n", name.c_str());
|
|
|
@@ -167,6 +170,15 @@ void Material::addShaderPass(const ShaderPass &pass) {
|
|
|
pass.shader->addEventListener(this, Event::RESOURCE_RELOAD_EVENT);
|
|
|
}
|
|
|
|
|
|
+void Material::addShaderPassForShader(std::shared_ptr<Shader> shader) {
|
|
|
+ ShaderPass shaderPass;
|
|
|
+ shaderPass.shader = shader;
|
|
|
+ shaderPass.shaderBinding = std::make_shared<ShaderBinding>();
|
|
|
+ shaderPass.shaderBinding->targetShader = shaderPass.shader;
|
|
|
+ shaderPass.blendingMode = Renderer::BLEND_MODE_NORMAL;
|
|
|
+ addShaderPass(shaderPass);
|
|
|
+}
|
|
|
+
|
|
|
void Material::addShaderPassAtIndex(const ShaderPass &pass, unsigned int shaderIndex) {
|
|
|
shaderPasses.insert(shaderPasses.begin()+shaderIndex, pass);
|
|
|
pass.shader->addEventListener(this, Event::RESOURCE_RELOAD_EVENT);
|