Cycles/Eevee texture nodes for modifiers, painting and more #54656

Open
opened 2018-04-16 13:17:31 +02:00 by Brecht Van Lommel · 57 comments

With Blender Internal being removed, we have an opportunity to support the same set of textures for Cycles, Eevee, modifiers, particles, painting, compositing, etc. So we plan to port the relevant Cycles / Eevee shader nodes to Blender C code, and make those the new texture nodes that can be used throughout Blender. Blender Internal textures can be removed then, and we can extend the Cycles / Eevee shader nodes to add any important missing features from them.

  • Some nodes like color ramps, RGB curves, and similar utilities are already there.
  • Texture nodes like image, noise, voronoi need to be ported.
  • Geometry, attribute and similar nodes as well. These are the most complicated since they access the mesh geometry.
  • Some nodes like BSDF, Mix Shader, Bevel, .. would not be supported.

Further we need a good UI for this in the texture properties.

With Blender Internal being removed, we have an opportunity to support the same set of textures for Cycles, Eevee, modifiers, particles, painting, compositing, etc. So we plan to port the relevant Cycles / Eevee shader nodes to Blender C code, and make those the new texture nodes that can be used throughout Blender. Blender Internal textures can be removed then, and we can extend the Cycles / Eevee shader nodes to add any important missing features from them. * Some nodes like color ramps, RGB curves, and similar utilities are already there. * Texture nodes like image, noise, voronoi need to be ported. * Geometry, attribute and similar nodes as well. These are the most complicated since they access the mesh geometry. * Some nodes like BSDF, Mix Shader, Bevel, .. would not be supported. Further we need a good UI for this in the texture properties.
Author
Owner

Added subscriber: @brecht

Added subscriber: @brecht

#68895 was marked as duplicate of this issue

#68895 was marked as duplicate of this issue

Added subscriber: @michaelknubben

Added subscriber: @michaelknubben
Member

Added subscriber: @pragma37

Added subscriber: @pragma37
Member

May I suggest adding a bake texture function to the baking API instead of duplicating every node in C?
This function would evaluate a single mesh in isolation and would take a texture node tree instead of a material one (texture node trees would be just like regular material node trees without shader nodes).
This would likely be faster to evaluate since it could run in the GPU and would allow better integration with third party render engines.

I already suggested this in the devtalk forums , but I'm not sure if it was discarded as a bad idea or just went unnoticed.

May I suggest adding a bake texture function to the baking API instead of duplicating every node in C? This function would evaluate a single mesh in isolation and would take a texture node tree instead of a material one (texture node trees would be just like regular material node trees without shader nodes). This would likely be faster to evaluate since it could run in the GPU and would allow better integration with third party render engines. I already suggested this [in the devtalk forums ](https://devtalk.blender.org/t/displacement-from-material-modifier/107/9?u=pragma37), but I'm not sure if it was discarded as a bad idea or just went unnoticed.
Author
Owner

Performance is not going to be good that way, we don't want to copy meshes to Cycles or another renderer when we already have them in Blender just to do some texture evaluations in the middle of a modifier stack. Using the GPU would also be problematic, mostly because of the latency of transferring data between CPU and GPU, and because it's difficult to create big enough batches of data to work on even if latency was low.

Performance is not going to be good that way, we don't want to copy meshes to Cycles or another renderer when we already have them in Blender just to do some texture evaluations in the middle of a modifier stack. Using the GPU would also be problematic, mostly because of the latency of transferring data between CPU and GPU, and because it's difficult to create big enough batches of data to work on even if latency was low.
Member

At least on that particular example, running the modifier on the GPU(gtx 950) is much faster than on the CPU(i7 4790k). And that's on a case where the ratio between evaluated pixels and vertices is just 1. For painting and compositing, shouldn't the payoff be much better ? It wouldn't even be necessary to send the whole mesh to the renderer.

Just to make it clear, I know you are infinitely more qualified than me to know what's the correct way to go. Sorry if I look disrespectful, it's absolutely not my intention.

At least on that particular example, running the modifier on the GPU(gtx 950) is much faster than on the CPU(i7 4790k). And that's on a case where the ratio between evaluated pixels and vertices is just 1. For painting and compositing, shouldn't the payoff be much better ? It wouldn't even be necessary to send the whole mesh to the renderer. Just to make it clear, I know you are infinitely more qualified than me to know what's the correct way to go. Sorry if I look disrespectful, it's absolutely not my intention.
Author
Owner

There is definitely a point where it gets faster on the CPU, when the shader is sufficiently complicated and the number of vertices is high enough. There's a latency vs throughput trade-off.

If you have for example a scene with hundreds of objects that need few texture evaluations, the latency adds up and things could slow down a lot. Existing code is usually structured assuming that you can get one texture evaluation at a time. Rewriting that to batch together a bunch of texture evaluations would be quite some work and make the code more complicated.

There is definitely a point where it gets faster on the CPU, when the shader is sufficiently complicated and the number of vertices is high enough. There's a latency vs throughput trade-off. If you have for example a scene with hundreds of objects that need few texture evaluations, the latency adds up and things could slow down a lot. Existing code is usually structured assuming that you can get one texture evaluation at a time. Rewriting that to batch together a bunch of texture evaluations would be quite some work and make the code more complicated.

Added subscriber: @LucianoMunoz

Added subscriber: @LucianoMunoz

Added subscriber: @Mantissa

Added subscriber: @Mantissa

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

Added subscriber: @DanielPaul

Added subscriber: @DanielPaul
Author
Owner

Added subscriber: @dfelinto

Added subscriber: @dfelinto

Added subscriber: @Blendork

Added subscriber: @Blendork

Added subscriber: @MichaelHermann

Added subscriber: @MichaelHermann

Added subscriber: @DanPool

Added subscriber: @DanPool

Added subscriber: @c2ba

Added subscriber: @c2ba

Added subscriber: @Andruxa696

Added subscriber: @Andruxa696

Added subscriber: @SteffenD

Added subscriber: @SteffenD

Added subscriber: @BartekMoniewski

Added subscriber: @BartekMoniewski

Added subscriber: @RC12

Added subscriber: @RC12

Added subscriber: @ttrevan

Added subscriber: @ttrevan

Added subscriber: @SamGreen

Added subscriber: @SamGreen

Added subscriber: @Pipeliner

Added subscriber: @Pipeliner
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser

Added subscriber: @Slowwkidd

Added subscriber: @Slowwkidd

Added subscriber: @baoyu

Added subscriber: @baoyu

Any update on this? Reuse the procedural texture nodes across the entire blender could be much intuitive cause they can easily be visualized. Implementation of luxcore render's texture node editor is a good reference. User can create a pointer in luxcore texture node editor, and use them in shader node editor the way like how node group's been used.

Any update on this? Reuse the procedural texture nodes across the entire blender could be much intuitive cause they can easily be visualized. Implementation of luxcore render's texture node editor is a good reference. User can create a pointer in luxcore texture node editor, and use them in shader node editor the way like how node group's been used.
Contributor

Added subscriber: @AndresStephens

Added subscriber: @AndresStephens
Contributor

Just tried to use these editors, and found they are almost a redundant and non-working editor - no thumbnails, no use when "use nodes" is on, and no properties accessible elsewhere in the UI. The editor is currently legacy with no integration into any practical use - and was mainly there for Blender Internal.

Is there a way to make these editors relevant for Cycles and Eevee?

And also, is there a way to be able to access the node trees of these textures throughout the general UI? (Modifiers, Geometry Nodes, materials, etc)?

Just tried to use these editors, and found they are almost a redundant and non-working editor - no thumbnails, no use when "use nodes" is on, and no properties accessible elsewhere in the UI. The editor is currently legacy with no integration into any practical use - and was mainly there for Blender Internal. Is there a way to make these editors relevant for Cycles and Eevee? And also, is there a way to be able to access the node trees of these textures throughout the general UI? (Modifiers, Geometry Nodes, materials, etc)?

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Contributor

Added subscriber: @IyadAhmed

Added subscriber: @IyadAhmed

Added subscriber: @Erindale

Added subscriber: @Erindale

Fingers crossed for Blender 3.0!

Fingers crossed for Blender 3.0!

Added subscriber: @zNight

Added subscriber: @zNight

Added subscriber: @Bobo_The_Imp

Added subscriber: @Bobo_The_Imp

Added subscriber: @txo

Added subscriber: @txo

Added subscriber: @Aeraglyx

Added subscriber: @Aeraglyx

Added subscriber: @Limarest

Added subscriber: @Limarest

It's been 3 years since this task was created - surely most of the community is eager to see some action!
Is there any pre-production that can be done with our hands to help push this forward?
UI designs, sketches, workflow examples, anything you need to start the discussion on what the new system will and won't be at least?

It's been 3 years since this task was created - surely most of the community is eager to see some action! Is there any pre-production that can be done with our hands to help push this forward? UI designs, sketches, workflow examples, anything you need to start the discussion on what the new system will and won't be at least?
Member

Added subscriber: @JulienKaspar

Added subscriber: @JulienKaspar

Added subscriber: @monocrmd

Added subscriber: @monocrmd

This comment was removed by @monocrmd

*This comment was removed by @monocrmd*

Added subscriber: @Diogo_Valadares

Added subscriber: @Diogo_Valadares

Added subscriber: @hamed.desighn

Added subscriber: @hamed.desighn

Hi , is it possible to just take whats cycles rendering it and converting it to geo ? not baking any map just taking the geo data after displacement from cycels and turn it to real object .

Hi , is it possible to just take whats cycles rendering it and converting it to geo ? not baking any map just taking the geo data after displacement from cycels and turn it to real object .
Member

Removed subscriber: @pragma37

Removed subscriber: @pragma37

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific

Added subscriber: @heini

Added subscriber: @heini
Contributor

Bump, this needs some polish.

Bump, this needs some polish.

Added subscriber: @Yuro

Added subscriber: @Yuro

Added subscriber: @T.R.O.Nunes

Added subscriber: @T.R.O.Nunes

Added subscriber: @Christoph-Feck

Added subscriber: @Christoph-Feck

Added subscriber: @shanedk

Added subscriber: @shanedk

Added subscriber: @mod_moder

Added subscriber: @mod_moder
Julien Kaspar added this to the Sculpt, Paint & Texture project 2023-02-08 10:49:06 +01:00
Philipp Oeser removed the
Interest
Sculpt, Paint & Texture
label 2023-02-10 09:12:52 +01:00
Contributor

Quick question, 5 years later - will this ever be ported to Eevee or Cycles and integrated again?

Quick question, 5 years later - will this ever be ported to Eevee or Cycles and integrated again?
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
43 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#54656
No description provided.