It’s finally time to open source HdCycles! A lot of work has gone into this first release. A fair few features are supported, however there are still a number of performance and stability issues. We are actively working on these. This is an alpha build. Expect some bugs and crashes. We would love to hear your feedback! Feel free to reach out directly, or send through a GitHub Issue.
https://github.com/tangent-opensource/hdcycles
HdCycles will allow any Hydra enabled digital content creation tool to use the Cycles renderer to directly render USD data. Examples of such are: Houdini, USDView, Katana. The work released initially lays the foundations for the future of rendering a 1 to 1 copy of a Blender scene via USD data. The next steps will be our work on the usdCycles schema and adding support for this within the delegate.
It’s very exciting to get this out into the world and to keep on working on it. Stay tuned!
On a personal level, this has been an amazing project to work on. Here is a list of just some of the people that have made this launch possible:
- Tangent Animation
- Mark Theriault
- Stefan Werner
- Adam Katz
- Jake Fullerton
- Blazej Floch
- Matt Estela
- Pixar
For a full list of compatible features, see the readme.
If you’re loading it up for the first time, some things to note:
- You cannot select objects interactively
- Subdivision is disabled by default, we have noticed some crashes with attributes (
HD_CYCLES_ENABLE_SUBDIVISION=1
) - Motion blur is disabled by default, transform based motion blur should work. (
HD_CYCLES_ENABLE_MOTION_BLUR=1
) - Normals created in Houdini are not respected yet. Support for this should come soon.
- Varying levels of a usdCycles schema have been implemented. Work will be done to converge this to an Open Source standard
- The Blender Exporter is not yet Open Source (We are working on this. Priority for this should happen soon after HdCycles release)
- A “Transparent” render (render with no background) is support by setting
HD_CYCLES_USE_TRANSPARENT_BACKGROUND=1
- Tiled rendering is not supported
- Filmic
config.ocio
is supported, you must set your OCIO environment variable - Max samples can be set via environment variable
HD_CYCLES_MAX_SAMPLES=512
- Houdini
- Use at your own risk. Its a very first pass implementation
- We will be fleshing these out in time
- Point rendering is naively supported, resolution and style can be set via primvars (Similar to karma). In a LOPs attribute wrangle:
i[]@cycles:object:point_style = {1}; //0 discs, 1: spheres
i[]@cycles:object:point_resolution = {16};
- Houdini Cycles nodes are provided in
tools/hda/cycles_nodes.hda
- When the usdCycles schema is created, we will create additional hdas to support a houdini workflow of setting render and object specific settings
Building it yourself is possible and recommended, however, if you are using Houdini 18.0.532 on windows, you can download and use this right now. The provided build is only built for CPU rendering, and is not guaranteed to be updated or compatible. It’s possible in the future that we will have more automated build scripts.
HdCycles – 0.7.0 (Windows + Houdini 18.0.532)
To install you will need to add the plugin/usd/hdCycles
and plugin/usd/ndrCycles
paths to your PXR_PLUGINPATH_NAME
environment variable.
A full list of currently supported environment variables are listed below. Use at your own risk 😉
Environment Variable | Default | Description |
/* ====== HdCycles Settings ====== */ | ||
HD_CYCLES_ENABLE_LOGGING | FALSE | Enable HdCycles Logging |
HD_CYCLES_ENABLE_MOTION_BLUR | FALSE | Enable HdCycles motion blur support |
HD_CYCLES_MOTION_STEPS | 2 | Number of frames to populate motion for |
HD_CYCLES_ENABLE_DOF | TRUE | Enable hdCycles depth of field support |
HD_CYCLES_ENABLE_SUBDIVISION | FALSE | Enable HdCycles subdiv support |
HD_CYCLES_SUBDIVISION_DICING_RATE | 0.1 | Mesh subdivision dicing rate |
HD_CYCLES_MAX_SUBDIVISION | 12 | Maximum levels of subdivision |
HD_CYCLES_RENDER_WIDTH | 1280 | Width of a non interactive HdCycles render |
HD_CYCLES_RENDER_HEIGHT | 720 | Width of a non interactive HdCycles render |
HD_CYCLES_USE_OLD_CURVES | FALSE | If enabled, curves will be populated manually with meshes (You probably dont want this) |
HD_CYCLES_USE_TRANSPARENT_BACKGROUND | FALSE | If enabled, the background will be transparent in renders |
/* ======= Cycles Settings ======= */ | ||
HD_CYCLES_ENABLE_EXPERIMENTAL | FALSE | Experimental cycles support. |
HD_CYCLES_SHADING_SYSTEM | SVM | Shading system cycles will use |
HD_CYCLES_DEVICE_NAME | CPU | Device cycles will use to render |
HD_CYCLES_DISPLAY_BUFFER_LINEAR | TRUE | Format of display buffer. False: byte. True: half. |
HD_CYCLES_MAX_SAMPLES | 256 | Number of samples to render per pixel |
HD_CYCLES_BVH_TYPE | DYNAMIC | DYNAMIC or STATIC |
HD_CYCLES_NUM_THREADS | 0 | Number of threads to use |
HD_CYCLES_PIXEL_SIZE | 1 | Size of pixel |
HD_CYCLES_TILE_SIZE_X | 64 | Size of tile x |
HD_CYCLES_TILE_SIZE_Y | 64 | Size of tile y |
HD_CYCLES_START_RESOLUTION | 4096 | Maximum start Resolution of render |
HD_CYCLES_EXPOSURE | 1 | Exposure of cycles film |
HD_CYCLES_SHUTTER_MOTION_POSITION | 1 | Position of shutter motion position. (0: Start, 1: Center, 2: End) |
/* ===== Curve Settings ===== */ | ||
HD_CYCLES_CURVE_RESOLUTION | 3 | Resolution of curve |
HD_CYCLES_CURVE_SUBDIVISIONS | 3 | Curve subdvisions |
HD_CYCLES_CURVE_USE_BACKFACES | FALSE | Should curve geometry have backfaces |
HD_CYCLES_CURVE_USE_ENCASING | TRUE | Should curve be encased |
HD_CYCLES_CURVE_SHAPE | CURVE_THICK | Shape of curves [CURVE_RIBBON, CURVE_THICK] |
HD_CYCLES_CURVE_PRIMITIVE | CURVE_SEGMENTS | Curve primitive [CURVE_TRIANGLES, CURVE_LINE_SEGMENTS, CURVE_SEGMENTS, CURVE_RIBBONS] |
/* ===== Integrator Settings ===== */ | ||
HD_CYCLES_INTEGRATOR_METHOD | PATH | Method of path tracing. [PATH, BRANCHED_PATH] |
HD_CYCLES_DIFFUSE_SAMPLES | 1 | Number of diffuse samples for cycles integrator |
HD_CYCLES_GLOSSY_SAMPLES | 1 | Number of glossy samples for cycles integrator |
HD_CYCLES_TRANSMISSION_SAMPLES | 1 | Number of transmission samples for cycles integrator |
HD_CYCLES_AO_SAMPLES | 1 | Number of ambient occlusion samples for cycles integrator |
HD_CYCLES_MESH_LIGHT_SAMPLES | 1 | Number of mesh light samples for cycles integrator |
HD_CYCLES_SUBSURFACE_SAMPLES | 1 | Number of subsurface samples for cycles integrator |
HD_CYCLES_VOLUME_SAMPLES | 1 | Number of volume samples for cycles integrator |