Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cycles scene reader #272

Theverat opened this issue Jul 22, 2019 · 0 comments


Copy link

commented Jul 22, 2019

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

  • Support packed images
  • 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.

  • Ambient Occlusion
  • Attribute
  • Bevel
  • Camera Data
  • Fresnel
  • Geometry
  • Hair Info
  • Layer Weight
  • Light Path
  • Object Info
  • Particle Info
  • RGB
  • Tangent
  • Texture Coordinate
  • UV Map
  • Value
  • Wireframe
  • Add Shader
  • Anisotropic BSDF (rotation TODO)
  • Diffuse BSDF
  • Emission
  • Glass BSDF
  • Glossy BSDF
  • Hair BSDF
  • Holdout
  • Mix Shader
  • Principled BSDF (unsupported inputs: subsurface, subsurface radius, subsurface color, clearcoat roughness, IOR, transmission, transmission roughness, emission, alpha, normal, clearcoat normal, tangent)
  • Principled Hair BSDF
  • Principled Volume
  • Refraction BSDF
  • Subsurface Scattering
  • Toon BSDF
  • Translucent BSDF (TODO just an approximation right now)
  • Transparent BSDF
  • Velvet BSDF
  • Volume Absorption
  • Volume Scatter
  • Brick Texture
  • Checker Texture (only "Object" texture coordinates are supported. Textured scale is not supported)
  • Environment Texture
  • Gradient Texture
  • IES Texture
  • Image Texture (Lots of stuff to do, only the basics work)
  • Magic Texture
  • Musgrave Texture
  • Noise Texture
  • Point Density
  • Sky Texture
  • Voronoi Texture
  • Wave Texture
  • Bright Contrast
  • Gamma
  • Hue/Saturation
  • Invert
  • Light Falloff
  • MixRGB (only the following modes are supported: Mix, Multiply, Add, Subtract, Divide)
  • RGB Curves
  • Bump
  • Displacement
  • Mapping
  • Normal
  • Normal Map
  • Vector Curves
  • Vector Displacement
  • Vector Transform
  • Blackbody
  • 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
  • Combine RGB
  • Combine XYZ
  • Math (only the following modes are supported: Add, Subtract, Multiply, Divide, Greater Than, Less Than, Power, Absolute, Round, Modulo)
  • RGB to BW
  • Separate HSV
  • Separate RGB
  • Separate XYZ
  • Vector Math
  • Wavelength
  • Script

Basic node groups are supported, but nested node groups (a group within another group) are not supported yet.

  • Frame
  • Reroute

Object Settings

  • Use the camera ray visibility property of Cycles
  • Use the motion blur properties of Cycles

Light/World Settings

  • World:
    • Flat color
    • HDRI
    • Sky
  • Lights:
    • 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

Camera Settings

  • Default tonemapper should be linear, auto disabled, gain = 1
  • Enable clipping by default

Related: #80

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@Theverat Theverat referenced this issue Jul 22, 2019
50 of 58 tasks complete
@Theverat Theverat pinned this issue Sep 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
1 participant
You can’t perform that action at this time.