Setting multiple material instances of the same type as blendables doesn't work

Hello, I’m trying to have multiple instances of the same material as blendables in a post processing volume, but with different parameters. What happens is that when I add a new instance to the blendables array, then only the newly added instance does it’s post processing, the other ones get ignored. The SceneTexture is set to PostProcessInput0, which I think is correct?

The funny thing is that when I add copys of the parent material and set the parameters there or use parameter collections (instead of creating instances), then it works. However, I can’t use this workaround because I need the ability to create and add an arbitrary amount of dynamic instances of the material at runtime.

Thanks

Hi -

I have been testing your issue and have not been able top replicate it as you are describing it. I have included a copy of my latest test, if you could open it and see if this is what you are doing and if not let me know what I need to change. Ignoring the name it should open to the level.

AH_CustomCollision - for Blendables PP Test

Thank You

Eric Ketchum

That’s not exactly what I’m doing. What I do is I’m adding multiple material instances of the same parent material to the blendables array, but with different parameters. I’m sending you a modifed version of your project and instructions how to reproduce:

Project: [link text][1]

  1. There is a red, green and blue cube in the scene. There is also a Material that is basically a color filter namend FilterColor. There are also two copies of the Material named FilterColorRed and FilterColorGreen with “hard coded” color parameters.
    When you plug them both into the blendables array, then you should only see blue. This is what I think it should work like.

  2. Now instead of using the copies of the FilterColor Material, use the two Instances of the Material named FilterColor_InstGreen and FilterColor_InstRed. Now plug them both in and you should see that only the lastly plugged in Instance does it’s work, so the result is either G-B or R-B.

(You don’t even need to use a blueprint for this)

Here the whole thing visually:

Regards

Hi -

Thank you for the clarification that helped me understand what you were trying to achieve. I was easily able to see what the issue was and have entered a bug report, for reference UE-12460. As we continue the investigation toward a solution, I will keep you informed here.

Thank You

Eric Ketchum

If I understand you correctly this is as designed. See here (Blending Between Different Material Instances):

It might not immediately be obvious why it works like this but the blending between material instances is very powerful and works nicely with instances. It would be much less useful to create multiple passes in that case.

If you want to create multiple post process passes you have to create multiple materials. Usually that would be a performance issue and it’s possible to do it in a better way.