BlendLuxCore
BlendLuxCore copied to clipboard
Cycles scene reader [$80]
This project aims for compatibility with Cycles material/texture nodes, light settings, camera settings and so on. The Cycles scene reader is not a single class or function, but rather a project to fuse every part of BlendLuxCore closer with Cycles/Eevee by sharing properties where it makes sense and is possible.
Material Nodes
- [x] Support packed images
- [x] Support nested node groups
- [ ] Support for more nodes (see the list of compatible/incompatible nodes below)
- [ ] figure out how to make it possible to add shader nodes (diffuse BSDF etc.) while LuxCore engine is selected (currently they get hidden, apparently they have some check for the current engine in their poll() methods)
- [ ] Improve the report about incompatible nodes. Maybe mark them in red in the node editor (with reset button)? Show the percentage of successfully converted nodes and maybe a statement like "The materials in this scene are too complicated for our node reader" when percentage is lower than x.
- [ ] Handle malformed node setups the same way as Cycles. For example, if a shader is plugged into a color socket, Cycles seems to simply ignore it and use the
default_value
of the socket, while our converter currently produces an incorrect SDL output that will throw errors on render startup.
List of nodes
Nodes with ~~strikethrough~~ are unlikely to ever get supported or don't make sense in our shading system (e.g. a sky texture on a material). Nodes with a checkmark are at least partially supported. Note that the support can be an approximation or unfinished. Normal inputs of material nodes (for bump/normalmapping) are not supported yet.
Input
- [ ] Ambient Occlusion
- [ ] Attribute
- [ ] Bevel
- [ ] Camera Data
- [ ] Fresnel
- [x] Geometry
- [x] Position
- [x] Normal
- [ ] Tangent
- [ ] True Normal
- [ ] Incoming
- [ ] Parametric
- [ ] Backfacing
- [ ] Pointiness
- [ ] Random Per Island
- [ ] Hair Info
- [ ] Layer Weight
- [ ] Light Path
- [x] Object Info
- [ ] Location
- [ ] Color
- [x] Object Index
- [x] Material Index
- [x] Random (only works if the object ID is -1 (random))
- [ ] Particle Info
- [x] RGB
- [ ] Tangent
- [ ] Texture Coordinate
- [ ] UV Map
- [x] Value
- [ ] Wireframe
Shader
- [ ] ~~Add Shader~~
- [x] Anisotropic BSDF (rotation TODO)
- [x] Diffuse BSDF
- [x] Emission
- [x] Glass BSDF
- [x] Glossy BSDF
- [ ] Hair BSDF
- [x] Holdout
- [x] Mix Shader
- [x] Principled BSDF (unsupported inputs: subsurface, subsurface radius, subsurface color, clearcoat roughness, transmission roughness, clearcoat normal, tangent)
- [ ] Principled Hair BSDF
- [ ] Principled Volume
- [x] Refraction BSDF
- [ ] Subsurface Scattering
- [ ] Toon BSDF
- [x] Translucent BSDF (TODO just an approximation right now)
- [x] Transparent BSDF
- [ ] Velvet BSDF
- [ ] Volume Absorption
- [ ] Volume Scatter
Texture
- [ ] Brick Texture
- [x] Checker Texture (only "Object" texture coordinates are supported. Textured scale is not supported)
- [ ] ~~Environment Texture~~ (supported in world node trees)
- [ ] Gradient Texture
- [ ] IES Texture
- [x] Image Texture (Lots of stuff to do, only the basics work)
- [ ] Magic Texture
- [ ] Musgrave Texture
- [ ] Noise Texture
- [ ] Point Density
- [ ] ~~Sky Texture~~ (supported in world node trees)
- [ ] Voronoi Texture
- [ ] Wave Texture
Color
- [x] Bright Contrast
- [ ] Gamma
- [x] Hue/Saturation
- [x] Invert
- [ ] ~~Light Falloff~~
- [x] MixRGB (only the following modes are supported: Mix, Multiply, Add, Subtract, Divide)
- [ ] RGB Curves
Vector
- [x] Bump
- [ ] Displacement
- [ ] Mapping
- [ ] Normal
- [x] Normal Map
- [ ] Vector Curves
- [ ] Vector Displacement
- [ ] Vector Transform
Converter
- [x] Blackbody (only non-textured temperature supported)
- [x] ColorRamp (only Linear and Constant interpolation modes are supported, the rest is exported as cubic interpolation. Only RGB is supported as color mode)
- [ ] Combine HSV
- [x] Combine RGB
- [x] Combine XYZ
- [x] Map Range
- [x] Math (only the following modes are supported: Add, Subtract, Multiply, Divide, Greater Than, Less Than, Power, Absolute, Round, Modulo)
- [x] RGB to BW
- [ ] Separate HSV
- [x] Separate RGB
- [x] Separate XYZ
- [ ] Vector Math
- [ ] Wavelength
Script
- [ ] ~~Script~~
Group
Supported.
Layout
- [x] Frame
- [x] Reroute
Object Settings
- [ ] Use the camera ray visibility property of Cycles
- [ ] Use the shadow ray visibility property of Cycles (export with shadow color (1, 1, 1) if shadow ray vis is disabled)
- [ ] Use the motion blur properties of Cycles
Light/World Settings
Try to share as many properties with Cycles (or Eevee?) as possible. It should be relatively seamless to switch back and forth between Cycles, LuxCore and Eevee - if you change a light's brightness in one engine, the others should also reflect this change
- [ ] World:
- [x] Without node tree
- [x] Background node (aka flat color)
- [ ] Environment node (aka HDRI)
- [x] Sky texture node
- [ ] Lights:
- [x] Eevee settings (used when
use_nodes
is disabled) - [x] (Simple) node setups
- [x] Fix area light brightness difference caused by the fact that Cycles and Lux handle changes in surface area differently
- [x] Fix sun brightness difference when half angle > 0.05, where in LuxCore the distantlight is used, see https://github.com/LuxCoreRender/LuxCore/issues/298
- [ ] Implement Cycles spot light soft blending in Lux (currently they are slightly different)
- [x] Eevee settings (used when
Camera Settings
- [x] Default tonemapper should be linear, auto disabled, gain = 1
- [x] Enable clipping by default
- [x] Use Cycles DOF settings (f-stop etc.) and hide unsupported settings (e.g. blades)
- [ ] Use "transparent film" property of Cycles
- [ ] Support Cycles film exposure value (maybe add as an extra tonemapper entry, where the UI shows the Cycles property and uses a linear tonemapper behind the scenes)
Render Layer Settings
- [ ] Sync AOV/pass settings when the "Use Cycles Settings" button is used
Related: #80
There is a $80 open bounty on this issue. Add to the bounty at Bountysource.
I work on the converter for light/world settings in the cycles_lights branch.
Nice. By the way, last time I checked Eevee was not using node-based lights, so for the start we could just implement compatibility with them and ignore Cycles light node trees.
Please only update this issue when changes have been made to master, not in branches. It should reflect the current state of support available in daily builds.
I'm completely new to this and have no idea how it works. I need a light path node and I also need to use animated images as textures. I would like to help this project and I have already offered a small bounty and would gladly add more if I thought that I may see these features in the not too distant future. What is the time frame for this project? And can I offer a bounty for just these features?
Thank you for your support!
I need a light path node
For this, you should open a feature request here: https://github.com/LuxCoreRender/LuxCore/issues/new But you will have to go into more detail about this, what kind of light path information exactly you need, so someone without knowledge of Cycles would understand it.
and I also need to use animated images as textures.
Do you mean image sequences? Or something like animated GIF? I could add image sequence support to the Cycles scene reader.
What is the time frame for this project?
This project is a lot of work, so there is no concrete timeframe. Many of the unsupported Cycles' features don't exist yet in LuxCore, so they need to be added there first before the scene reader can translate them.
And can I offer a bounty for just these features?
It is best to open one new issue per feature request. You can then place a bounty on the specific issue.
Hi Simon, Thank you for taking the time to answer my inquiry, I will ask a friend who is giving me classes to help me to open a feature request correctly this weekend. I think that image sequences should not be too complicated so maybe I will try requesting that first. I am still not at all sure exactly what I need from the light path node, I am pursuing a hunch, I am far from mastering LuxCoreRender so I may yet discover alternatives. I enjoyed the light path node in Cycles, since moving to LuxCore I miss it. Regards, Quentin.
On Tue, Jun 23, 2020 at 12:48 AM Simon Wendsche [email protected] wrote:
I need a light path node
For this, you should open a feature request here: https://github.com/LuxCoreRender/LuxCore/issues/new But you will have to go into more detail about this, what kind of light path information exactly you need, so someone without knowledge of Cycles would understand it.
and I also need to use animated images as textures.
Do you mean image sequences? Or something like animated GIF? I could add image sequence support to the Cycles scene reader.
What is the time frame for this project?
This project is a lot of work, so there is no concrete timeframe. Many of the unsupported Cycles' features don't exist yet in LuxCore, so they need to be added there first before the scene reader can translate them.
And can I offer a bounty for just these features?
It is best to open one new issue per feature request. You can then place a bounty on the specific issue.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/LuxCoreRender/BlendLuxCore/issues/272#issuecomment-647806946, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG2IB4Y3MHGOJURV2IJYNGDRX7NU5ANCNFSM4IF4TCGA .
Any news guys?☺
In v2.5:
- The normal input of material nodes can now be used
- Basic support for the bump node was added
- Holdout shaders are now supported
In v2.5:
- The normal input of material nodes can now be used
- Basic support for the bump node was added
- Holdout shaders are now supported
Can you show us more about appeared features with an examples and screens? ☺