GSoC 2023: Shader editor node preview - Weekly Reports


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.


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.


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


Please use the following topic in order to give useful thoughts about this project.


Report week 0

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 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)

Xcode time for the past 2.5 weeks : 30hrs.


Report week 1

This past week was not really active, my studies took me a lot of time.

Here are the progresses anyway :

  • exchange with UI devs and finalise the patch about preview designs
    • button for disabling node previews for the area
    • outline around the preview
  • learn a bit about jobs and renderpasses

I’ll probably link here a little demo of the current state of dev.

For this week (or the next one), I’m planning to :

  • create a basic AOV setup for the material duplicated (rendering in the background)
  • deal with jobs in parallel

Approximative time spent on XCode : 6.5hrs.