[Bf-viewport] Viewport and shader system patches

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Dec 30 14:50:31 CET 2015


On Tue, Dec 29, 2015 at 4:39 PM, Alexander Romanov
<a.romanov at blend4web.com> wrote:
> I agree that BI material system is outdated, but at the moment we (Blend4Web
> Team) are quite satisfied with BI state except some not so deep
> imperfections. So we are going to correct that imperfections. For example
> here is some refactoring proposal
> http://wiki.blender.org/index.php/Blender_Internal_Nodes_Refactoring

Adding these Cycles node features to BI seems all reasonable to me,
particularly if the target would be to unify things more with Cycles
material nodes instead of adding a completely new system specifically
for the viewport.

> BI and Viewport already have a lot of self-sufficient functionality. Could
> refactoring of the current shader system be an alternative to writing the
> whole system from scratch? I mean, we could incrementally prepare the
> current architecture for further PBR implementation. At the beginning, It
> could be just a PBR mode for node and simple materials which will replace
> non-physical inputs(diffuse , specular etc) with physical ones(metalness,
> roughness etc).

The issue with incremental changes is that you're also pretty much
forced to incrementally break compatibility over many Blender
versions, which is annoying for users. If it was mostly about
parameters, just adding a new PBR material node would be a good
solution for compatibility.

But there's issues with the way lights and materials interact, how
transparency and ray tracing are wrong in subtle ways, distinctions
between specular/reflection and diffuse/environment light, and more.
In my experience keeping those exceptions while also adding a new PBR
mode makes the code extremely complicated.

I don't want to go into too much detail here, but here's some old
notes about design issues if you're interested:
http://wiki.blender.org/index.php/Dev:2.5/Source/ShadingSystem/Implementation
http://wiki.blender.org/index.php/User:Brecht/RenderIdeas

Anyway, maybe it is fine to incrementally break compatibility during
the Blender 2.8 release cycle and users will just have to accept that?
Whatever way we do this, it would still be good to have some kind of
vision for what the end result should be.


More information about the Bf-viewport mailing list