Rendering with Karma XPU (materialX) in Houdini



Rendering with Karma XPU (materialX)

XPU requires materialX shaders for rendering, instead of VEX based shaders (i.e. principled shader) create a new project in /obj context add some geo, lights

creating a simple material

go to /mat context add Mtlx Standard Surface node (it's similar to redshift's rs_material or principled shader) add Mtlx Image node and select a texture image here (it's similar to redshift's rs_texture node) feed it into Base-color of Mtlx Standard Surface node (for more detailed materials see: Karma XPU materials (materialX))

assigning materials

assign the new materials by adding material nodes inside the geo objects in /obj

adding objects to stage (solaris)

go to /stage context (right side, networkview) add scene import (all) node filer: geometry objects add scene import (materials) node then add merge node and merge them

or use:

add sceneimport(all) node objects: *

for particles

add SOP import node SOP path: /obj/YOUR_PARTICLES add attribute wrangle node (to resize particles) VEX: @widths = ch("pscale_particles"); click on create spare parameters icon pscale particles: 0.1 check run on elements of array attributes primitives: all geometry primitives

adding camera to stage (solaris)

add camera node focal length: 180 aspect ratio: 1 x 1

position camera

click lock button next to viewport select in viewport drowdown cameras/camera1 then use alt + mouse drag to position camera click lock button again to release add merge node merge the camera nodes with previous nodes

adding lights to stage (solaris)

add environment light texture: set HDR map here add area lights (texture: set softbox texture here) add merge node merge the light nodes with previous nodes

enable disable light for specific object

after adding lights on stage add light linker node drag a light into the rules field in the middle drag geo from the right into light/shadow fields to include or exclude geo for each light use name attribute inside /obj/geo to separate geo for specific lights

quickly toggle or adjust lights

add light mixer node select lights and drag over into right field (select tab sliders)

adding IES lights

add spot light spot light options -> IES MAP

adding lights with custom shapes

in affinity designer, create the custom shape as a black mask/overlay, export as .exr add area light and select this texture

rendering the final image with karma

go to /stage context add karma node (this adds karma render settings, usdrender-rop nodes) rendering engine: XPU Engine viewport -> Persp. Dropdown -> Karma XPU or click Render to Mplay button

using snapshots

click show/hide snapshot strip icon to open the snapshot panel (bottom left 35mm-film-canister icon) right click on a snap shot -> revert network to this snapshot (like time machine for solaris network nodes)

excluding objects in scene

add render geometry settings node primitives: /somegeo shading tab -> render visibility: -primary (this removes the background)

adding dept of field

/obj -> camera -> sampling tab set very low f/stop: 0.1 add null node and name it focusnode /obj -> camera -> sampling tab -> focus field vlength(vtorigin(".","../focusnode")) karmarendersettings -> rendering tab -> camera effects tab enable depth of field

to preview DOF (depth of field):

change left scene view window (top dropdown) from obj to stage, click the pin icon to make it sticky then set values on camera (to avoid camera edit node in stage: go back to geo context and adjust cam here)

increasing samples to remove noise

path traced samples: 512 or more rendering tab -> sampling tab and limits tab -> adjust here image output tab -> filter tab -> denoiser: NVIDIA remember to increase refraction limits if refractive materials like glass or water were used, or surface will be black: karma render settings: rendering -> limits -> refraction limit: 6

render view

add new tab above 3d viewport -> viewers -> context view set drowndown to stage (set to karmaXPU)

error with red lights (after copying light from another scene)

textures are missing! check if texures are in the correct path for each light

updating textures in karma viewport

(if this doesn't work: Render -> Update Textures) switch to Karma CPU Persp, then back to Karma XPU Persp delete the .rat files (in textures folder) top menu dropdown -> reload current desktop open/close houdini

set render preview from progressive to bucket (for karma CPU)

advanced tab -> buckets and caching -> image mode: bucket

see render progress, render scheduler

on top of network view -> click new pane tab type: render scheduler

rendering multiple takes in karma

create the takes with custom parameters, switches, settings etc. go to /out context add USD render node render with take: SET-TAKE-HERE render delegate: XPU LOP path: /stage/SET-KARMA-RENDER-SETTINGS-NODE-HERE (select the karma settings node) output tab -> check wait for render to complete add batch node below copy usdrender node and batch node several times and set the different takes add a merge node below and feed all the batch nodes click render

to quickly reduce resolution

select all usdrender nodes override resolution: percentage of resolution resolution scale: 20

compositing, converting the exr file

go to /img context add image network and dive inside add File node and load the just rendered .exr add Rop File Output node Valid Frame Range: Render Current Frame Output Picture: $HIP/comp/final.png

converting multiple exr files at once

just add a top net (in img context) go inside and add a file pattern node Pattern: $HIP/render/* below add a rop composite node inside do the usual processing Output: $HIP/comp/`@filename`.png

adjusting hue, saturation, value, brightness, constrast

add hsv node saturation scale: 1.1 value scale: 1.1 add contrast node white: 1.03

src

https://vimeo.com/850635714 https://www.sidefx.com/tutorials/solaris-is-sweet/ https://vimeo.com/850635772 https://vimeo.com/650082073 https://vimeo.com/650082353



Published: January, 2024