I’m Colin, and I’ll be working for this GSoC project adding node previews for nodes in the shader editor.
During this summer, I’ll do my best to improve the way people previews the nodes when editing shaders.
Synopsis
In Blender, the material and shading system are controlled via node-trees where the user creates a material with a combination of nodes (mixing colours, reflectiveness, …). This system produces a complex material from a simple shader tree. So there are currently two ways to get feedback: the effect of the material on the objects of the scene and a small preview on primitives. Overall, the current system only exposes the end result of materials.
Previously with the blender internal rendering engine (in Blender 2.79, in 2019), the shader nodes used to have a small preview area where the user could see the node’s effect. It was removed since (Blender 2.8 and Eevee replaced the internal render engine causing some major changes in the code). My proposal is to bring this functionality back. Indeed, it is one of the most expected features by material artists.
Benefits
As it was the case with the old Blender Internal Renderer, having node previews was useful to have a sneak peek of the middle tree effects. By previewing the node effects, shader editing will be a little more responsive and node trees will be easier to understand according to artists on the feature proposal. This becomes especially useful when artists create procedural textures and complex procedural shapes inside the material shader. Regarding the practical part, a toggle button on the top bar of each node will make it easier to preview effects.
Pdf proposal
Here is the complete proposal for the one interested in reading it. (keep in mind that the schedule is approximative and I might differ a bit) Pdf here
Feedback
Please use the following topic in order to give useful thoughts about this project.
Today is the “official” starting period of this Google Summer of Code project.
But, during the community bonding period, I’ve been doing some work in advance because my school will end a bit late.
Anyway, here are the things I’ve been doing for the pat two weeks :
Understand the task I’m working on : exchange with other developers about the different ways to uniquely identify each node for previews.
Browse the code to explore the systems already there : SimulationZoneID, ComputeContext, bNodeInstanceHash.
Decide to use the ComputeContext basis for node previews identification.
Read and understand the best I can of the render_preview.cc file used to generate previews for materials, collections…
Dealing with UI : I had discussion in the Feedback thread about the preview design. The main problem raised by users was the lack of consistency when toggling the preview (the node would change size). To have a uniform preview system across node editors, I submitted a first patch regarding the compositor nodes to fix this design in all areas. See here.
When doing all of this, I experimented many things and I pushed them in a branch. This branch will probably track the future progress, but as I mentioned in the proposal, I might restart from nothing (while keeping the main ideas in mind), to have a cleaner design (code meaning). And when rewriting, I might do it in another branch (will decide with Thomas).
That it all for those two and a half weeks, I’m looking forward to having more work done and little first demos.
PS : I’ll put here the time counted by my computer spent on XCode. (Please do not consider it too much, because some more time is spent exchanging in the forums and thinking designs on the paper)