Skip to content

Releases: t3kt/raytk

RayTK Library Version 0.43

21 Sep 20:16
Compare
Choose a tag to compare

Highlights

  • Optimizations to improve performance in scenes with many operators and reduce GPU memory usage.
  • Usability improvements in customRender make it easier to use RayTK operators in your own shaders.
  • (raytkVolumes) New combineVolumes operator to combine two volumes with different blending modes.
  • (raytkVolumes) Depth compositing support in volumetricRaymarchRender3d to combine with other types of rendering.
  • Assorted smaller bug fixes.

Details

  • Improvements / additions
    • New OPs
      • (raytkVolume) combineVolumes - combine two volumes with different blending modes
    • New OP features
      • customRender - more detailed explanations in the default shader, custom parameter support, primary input TOP support (#1258)
      • iteratedTransform - support volumes (requires raytkVolumes)
      • radialClone - support baking in the combine mode to improve performance
      • (raytkVolumes) texture3dVolume - support assigning color from a 3D texture
      • (raytkVolumes) volumetricRaymarchRender3d - support depth compositing to combine with other types of rendering.
    • Snippets
      • customRender
  • Fixes
    • customRender - fix errors related to output buffers (#1258)
    • terrainNoiseField - fix parameters not disabling when inputs are attached to replace them (#1255)
    • torusGridSdf - fix broken combine mode baking optimization (#1246)
    • triangleSdf2d - fix scaling for equilateral mode (#1260)
    • Fix UI tooltips in palette (#1253)
  • Changes (potentially breaking)
    • All renderers now default to using separate uniform arrays per ROP for parameters, which should improve internal CHOP performance in scenes with a lot of operators/parameters. (#907)
  • Infrastructure / internals
    • Reduce OP image resolution to reduce tox size and GPU memory usage

Compatibility

  • This version requires TouchDesigner 2023.11880 or later.

RayTK Library v0.42

28 Jul 21:21
Compare
Choose a tag to compare

Highlights

  • Custom renderer lets you create your own shader that uses RayTK operators from your code!
  • Lots of new features and improvements to existing operators.
  • New addons framework for extra packages of functionality that are released separately from the main toolkit.
    • For now these will be available through Patreon, though there may be other options in the future.
    • The first of these are raytkVolumes and raytkAbstractions
  • The raytkVolumes addon lets you flow between RayTK and 3D textures (like with Josef Pelz's T3D) and supports volumetric raymarching!
  • The raytkAbstractions addon provides a bunch of new operators that make common workflows easier and more user-friendly.

Details

  • Improvements / additions
    • New OPs
      • customRender - create your own renderer with a custom shader using RayTK operators as functions (#1220)
      • (raytkAbstractions) enhancedWaveField - adds features to the waveField operator to make it easier to use, including animation, more wave types, and value scaling.
      • (raytkAbstractions) helixWarp - applies offsets to warp space in a helix pattern
      • (raytkAbstractions) spin - rotate with built-in animation
      • (raytkAbstractions) twistedRingsSdf - similar to mobiusRingSdf but with multiple interwoven rings
      • (raytkVolumes) assignDensity - assign density to a volume for use in 3D textures and volumetric rendering (#1230, #637)
      • (raytkVolumes) texture3dRender - renderer that produces 3D textures by sampling SDFs or fields (#1237)
      • (raytkVolumes) fieldVolume - constructs a volume using a field to provide the density
      • (raytkVolumes) sdfVolume - constructs a volume with the filled region defined by an SDF
      • (raytkVolumes) texture3dVolume - constructs a volume from a 3D texture
      • (raytkVolumes) volumetricRaymarchRender3D - renderer that uses volumes instead of SDFs and supports cloud-like renders (#1230)
    • New OP features
      • chainSdf - axis setting
      • chopField, chopFn - CHOP inputs as an alternative to using parameters
      • helixSdf - offset parameter
      • magnet - input fields for amount, radius, fade
      • noiseField - gabor noise type
      • pointMapRender / render2D - Use surface color when no material is assigned to an SDF
      • pointMapRender - density output (requires raytkVolumes)
      • polarCoordField - coordinate input so it can be used as a converter for fields
      • renderSelect - show buffer names in opImage (#753)
      • shadingProperty - show property name in opImage (#753)
      • textSdf2d - option to pass text as a parameter, so it doesn't change the code
      • texture1dField, texture3dField, textureField, dataTextureField - TOP inputs as an alternative to using parameters
      • torusGridSdf - option to only have rows or columns (#1231)
      • twirl - variable twisting around an axis
      • waveField, waveFn, waveWarp - added smooth square wave types
    • Palette and editor tools
      • Expand all / collapse all toggle in the palette
  • Fixes
    • "Fixed" typo in prismSdf, polygonSdf2d (#1233)
    • Fix error when using operators that use iteration as background fields (#1235)
    • Fix limitField handling of vector fields (#1236)
    • Fix bypass toggle on edgeCombine (#1239)
  • Changes (potentially breaking)
  • Infrastructure / internals
    • Support for addons with non-public source (#1065)

Compatibility

This version is compatible with TouchDesigner 2023.11760.

RayTK Library v0.41

10 May 21:40
Compare
Choose a tag to compare

Highlights

  • New instanceLight, lightTransform, and limitLight operators for more flexible lighting setups.
  • Overhaul of how multiple lights are handled by materials to produce more consistent results.
  • New mixFields operator acts as a mixer to easily combine different fields with level sliders and toggles.
  • Fixed the missing palette thumbnails that disappeared in the last release.
  • Helpful new actions in the editor tools menu.
  • Significant improvements to documentation.

Details

  • Improvements / additions
    • New OPs
      • instanceLight - use instancing to create multiple lights, with CHOPs for positioning and other settings (#1213)
      • lightTransform - transform specially designed to be used on lights (#1214)
      • limitLight - distance and boundary attenuation and optimization (#1224)
      • mixFields - combine multiple fields with quick toggles and level adjustments for each (#696)
      • restrictTypes - helper to force operators that support multiple types to use a specific type (#683)
    • New OP features
      • adjustColor - support using on lights (#1213)
      • assignUV - support using another SDF to assign UVs (#1218)
      • cameraTransform - support separate transform for look at position (#841)
      • magnet - uniform scaling
      • moduloToroidal - mirroring
      • radialClone - option to keep rotation while still arranging radially (#1219)
      • sampledPointMat - blending and offset field inputs (#1143)
      • spotLight - look at support (#834)
    • Editor tools (#1201)
      • Support editing multiple operators with the lock/unlock switcher actions
      • Action to combine fields with mixFields (#696)
      • Actions for cameraTransform/lightTransform (#541)
      • Action for adding to multiLight
      • Action for adding limitLight (#1224)
    • Improvements
      • Faster enable/disable with runtime bypass - mergeFields, shapedCombine, switch
      • Clarify some input type error messages
      • Fix display of thumbnail images on operator category documentation pages (#643)
      • Documentation for lots of operators that were missing it, and updated lots of existing docs.
  • Fixes
    • magnet - fix incorrect SDF scale adjustment (when possible)
    • moduloToroidal - fix swapped shift parameters
    • Fix broken previews in inspector related to missing output buffer selector
    • Fix missing palette thumbnails (#1217)
    • Prevent negative light levels which cause problems with multiple lights (#1213)
    • Hide irrelevant editor actions on renderers (#1201)
  • Changes (potentially breaking)
    • helixSdf - remove alternate coordinate type support for field inputs
    • raymarchRender3D - make limit box disabled by default
    • Restructured how multiple lights are handled. Materials are now responsible for looping through the lights and combining the results, rather than the renderer doing it. This allows modularMat to correctly handle shading elements that aren't based on lighting. There may be some differences in how material shading behaves, but hopefully they should be fairly minor. (#1213)
    • Deprecate simpleDiff, simpleIntersect, simpleUnion

Compatibility

This release is compatible with TouchDesigner 2023.11600.

RayTK Library v0.40

06 Apr 00:05
Compare
Choose a tag to compare

Highlights

  • New torusGridSdf and moduloToroidal for all your torus-based needs!
  • New terrainNoiseField with fractal brownian motion patterns!
  • Lots of bug fixes and optimizations including a 8% reduction in tox size!

Details

  • Improvements / additions
    • New OPs
      • moduloToroidal - new torus shaped modulo to create rings of rings (#1195)
      • torusGridSdf - torus-shaped grid made from rings
    • New OP features
      • diffuseContrib / specularContrib - runtime bypass (enable/disable)
      • quadSdf - size, thickness field inputs
      • radialClone - variable for current rotation amount (#1176)
      • rangeTransform - uniform scale (#1206)
      • sphereGridSdf - axis parameter (#1178)
      • terrainNoiseField - FBM noise, useful for surface offsetting (#1183)
      • XOR combine mode for all OPs that support SDF combination
    • Editor tools (#1201)
      • New action to merge float fields into a vector field
      • New action to add functionGraphRender
      • New actions for locking/unlocking switcher-based menu parameters
    • Snippets
      • New translate snippet
    • Misc improvements
      • In documentation, show source parameters for parameter-based inputs
      • Fix ranges for parameters in pointLight
      • Clarify confusing input label in worldPosMap (#1207)
  • Fixes
    • Fix incorrect pixel format in renderers related to shaderExecutor
    • Fix incorrect input validation in moduloPolar
    • Fix broken limit box handling in raymarchRender3d (#1202)
    • Fix broken primary value mode in exposeValue (#1205)
    • Fix runtime bypass in combineFields when in optimized mode
    • Fix duplicate parameter errors in rectangleSdf, polarCoordField
    • Fix UV output in render2D
    • Fix broken parameter processing when using separate uniforms mode
    • Fix shadow direction handling in directionalLight (#1210)
    • Fix 3D texture output in pointMapRender
  • Changes (potentially breaking)
    • Remove deprecated fieldMat
    • Remove alpha aexionSdf
    • Deprecate addFields
    • Move lots of ROPs from beta to default status (#1200)
    • Reduce default speed for speedGenerator
    • Make max dist a runtime parameter in raymarchRender3d (#1202)
    • Remove support for inlining parameter aliases in generated shaders
  • Infrastructure / internals
    • Migrate portions of opDefinition into an extension and refactor infrastructure to use it
    • Move param definitions, op elements into RopState
    • Consolidate and strip down parts of opDefinition, inputHandler, multiInputHandler, etc. to reduce per-ROP overhead
    • Support marking inputs as prohibited based on current ROP settings
    • Migrate build process to use TDAsyncIO
    • Remove support for combined snippets tox builds
    • Standardize access to output buffers

Compatibility

This version is compatible with TouchDesigner 2023.11600.

RayTK Library v0.39

25 Feb 01:01
Compare
Choose a tag to compare

Highlights

  • This release is primarily infrastructure and internal improvements, preparing for upcoming features.

Details

  • Improvements / additions
    • New OPs
      • cameraTransform - transform a camera's position and orientation
    • New OP features
      • curlNoiseField - simplified float version (#1184)
      • dogBoneSdf2d - option to specify endpoints and have different end radii
      • skyLightContrib - added rotation parameters, field inputs for color, rotation, direction
    • Editor tools
      • Action to add a modularMat
  • Fixes
    • Fix output channels for stepMap (#1164)
  • Changes (potentially breaking)
    • Remove deprecated blend operator (replaced by switch)
    • Remove deprecated sceneState component
    • Selectively detach depth input in raymarchRender3D
  • Infrastructure / internals
    • Include supported variables / variable sources in generated documentation
    • Include parameter handling modes in generated documentation
    • Shader execution encapsulation, related to engine support (#1158)
    • Consolidate multi-input handling
    • New logo and branding

Compatibility

This version is compatible with TouchDesigner 2023.11510.

RayTK Library v0.38

17 Jan 22:03
Compare
Choose a tag to compare

Highlights

  • New snippet format - separate tox files in a zip instead of one massive tox file with all of them. These will load much faster than the old format.
  • New 2D text SDF!
  • Reduced build tox file size.

Details

  • Improvements / additions
    • New OPs
      • chamferRectangleSdf2d - rectangle with chamfered corners
      • sphereGridSdf - latitude/longitude bars around a sphere
      • textSdf2d - basic 2d text SDF
    • New OP features
      • bandField - center, width, blending field inputs
      • bend - option to only bend one side (#1129)
      • instance - added scale CHOP support (#1151)
      • knife - support using both parameter and field input for offset
      • logPolarRepeat - rho / theta field inputs
      • rescaleFloatField - support applying to vector fields, where it does the same thing to all vector parts
      • stepField - blending field input
      • textureField - texel coordinate mode
    • Editor tools
      • New action to map a float field to a color range
      • New actions to create waveFields
      • New action to assign color to an SDF
    • New snippet structure - separate tox files in a zip instead of one massive tox file with all of them (#132, #1082)
  • Fixes
    • Fix error in Customize Shader Config action (#1147)
    • Fix error in triangleSdf2d when using read-only parameters (#1148)
    • Fix removal of annotations during the build process - reduces build size
    • Fix license check when choosing default resolution for new renderers (#1149)
    • Fix missing buffer selector that was breaking preview in the inspector (#1153)
    • Fix broken plane parameter in ringsSdf (#1154)
  • Changes (potentially breaking)
    • Deprecate the sceneState component
    • variableReference can no longer be manually created. Use the editor tools menu instead.
  • Infrastructure / internals
    • Removed unused dispatch table system
    • Initial infrastructure for MATs
    • Support for passing separate uniform arrays per ROP for parameters (#907)
    • Update to TD 2023.11340
    • Remove annotations in infrastructure components - improves stability in development tools
    • Avoid using custom instances of popMenu when possible for stability
    • Support for hidden ROPs, which can be created but are not shown in the palette

Compatibility

This version is compatible with TouchDesigner 2023.11340.

RayTK Library v0.37

13 Dec 00:21
Compare
Choose a tag to compare

Highlights

  • Compatibility with TD 2023 experimental builds
  • New applyTransform op makes it easier to transform field values, uv coordinates, etc
  • Stability improvements and bug fixes

Details

  • Improvements / additions
    • New OPs
      • applyTransform - to apply a transform filter to field values, uv coordinates, etc (#1019)
      • modifyDistance - use a field to modify the distance values from an SDF (#1139)
      • rectangleRepeat - repeat space in tiles arranged on the sides of a rectangle (#1126)
    • New OP features
      • almostIdentityFn - threshold, base value field inputs (#1124)
      • bandField - reverse parameter
      • cubicPulseFn - phase, width field inputs (#1124)
      • easeFn - exponent field input (#1124)
      • extrude - 2D height / offset field inputs (#1134)
      • flipFn - flip 0..1 modes as well as positive/negative (#1127)
      • gainFn = exponent field input (#1124)
      • parabolaFn - exponent field input (#1124)
      • positionField - pixel uv and pixel coordinate modes
      • prismSdf - rounding (#1130)
    • Editor tools
  • Fixes
    • Fix widget compatibility issues with TD 2023 experimental builds
    • Fix angle handling in magnet (#1138)
    • Fix return type limiting in circularRepeat
  • Changes (potentially breaking)
  • Infrastructure / internals
    • Stop syncing files within clones in devel source
    • Use the new input list parameter instead of dynamically wiring up texture inputs in renderers
    • Move op-specific code out of shared libraries to improve compile speeds

Compatibility

This build is compatible with TouchDesigner 2023.11170 and later.

Snippets

Where are the snippets for this release???

They aren't included in this release due to some problems with the build process. It was a choice between waiting until that issue was fixed or releasing without them. Hopefully the issue will be addressed for the next release.

RayTK Library v0.36

07 Sep 21:00
Compare
Choose a tag to compare

Highlights

  • New SDFs: isoscelesTriangleSdf2d, vesicaSegmentSdf
  • Improvements and customization in modulo and cloning operators
  • New editor actions

Details

  • Improvements / additions
    • New OPs
      • isoscelesTriangleSdf2d - specialized version of triangleSdf2d with more field inputs
      • texture1dField - specialized TOP input for things like color ramps (#1112)
      • variableList - define a sequence of variables for use in upstream operators, similar to provideVariable but designed for more complex scenarios (#1116)
      • vesicaSegmentSdf, vesicaSegmentSdf2d - similar to line segments but with tapering (#1104)
    • New OP features
      • assignAttribute - previous value variable to allow modifying existing attributes (#1046)
      • assignAttribute/getAttribute - got rid of the defineAttribute operator to treat attributes more like variables (#1046)
      • boxSdf - automatically produce an "edge distance" attribute, as a test case for this type of feature (#1113)
      • fisheyeCamera - toggle for look at position
      • gridClone/linearClone/radialClone - blend radius field inputs (#1119)
      • knife - smoothing like in slice (#1108)
      • limitField - smooth clamping
      • modularMat - expose sdf surface as a variable
      • modulo1D, modulo2D, modulo3D - shifted cell index variables that counteract the shift parameter
      • multiLight - automatically disable lights when level is zero
      • pausingWaveFn - field inputs for low and high width
      • petalSdf - field inputs for width and wrap
      • roundedRectangleSdf2d - option to scale rounding based on size (#1107)
    • Editor tools
      • Indent names for param parts in expose param menu
      • New action to create a worldPosMap
      • New action to simplify rotate to axisRotate (when possible)
      • New action to set up positionField input for custom transform on iteratedTransform
      • New action to create attribute references from ops that produce them (#1046)
  • Fixes
    • goochShadingContrib - fix shader error (#1105)
    • lfoGenerator - fix channel names not updating when changed
    • moduloPolar - fix angle conversion when using optimized mode (#1101)
    • moduloPolar - fix variable input validation settings
  • Changes (potentially breaking)
    • boxSdf - remove the "box type" option since the "cheap" mode wasn't useful or beneficial
  • Infrastructure / internals
    • Change to implicit definition of attributes, with declarations in variables tables and references in the references tables. Effectively this treats attributes like a type of variable but without explicit references to a source operator.

Compatibility

This version has been tested with TD 2022.33910.

There are known issues with the latest TD experimental build (2023.10130). See #1120.

RayTK Library v0.35

22 Jun 23:09
Compare
Choose a tag to compare

Highlights

  • Palette usability improvements including placing new operators with the mouse!
  • Holographic materials!
  • Cool S SDF!!!

Details

  • Improvements / additions
    • New OPs
      • archSdf2d
      • coolSSdf2d!
      • hologramContrib - for depth-based hologram materials (#463)
      • knitPattern
    • New OP features
      • axisLight/pointLight - position field input
      • archSdf - field inputs
      • arrange/combine/etc - improve handling of offsets for stair/column combine modes when offset is not driven by a field (#692)
      • adjustColor - support use on Sdf surface color
      • colorRampField - endpoint mode and easing function (#1094)
      • crossSdf - limited length option (#1091)
      • helixSdf - spread input (#1088)
      • polygonSdf2d - option arbitrary number of sides (#1083)
      • rampField - easing functions
      • spiralZoom - variables
      • stepField - easing functions
      • vectorToFloat - sum modes
    • Editor tools
      • simplify rescaleField when possible (#1086)
      • swap chain order
      • indent parameter part names in animate menus
    • Use placeOPs in the palette! (#22, #23)
    • Documentation for various ops
  • Fixes
    • Fix input variable settings and reorder inputs to match availability in many operators
    • Fix rectangleSdf handling of float input for scale (#1085)
    • Fix accidental required input in rampField
    • Fix errors for optimization on parameters on many operators (#993)
  • Changes (potentially breaking)
  • Infrastructure / internals
    • Infrastructure to support arbitrary suface attributes (#1046)

Compatibility

This version of RayTK is compatible with TouchDesigner 2022.32660.

It does not require a commercial TouchDesigner license.

RayTK Library v0.34

04 Jun 16:55
Compare
Choose a tag to compare

Highlights

  • Cloning improvements including gridClone and enhancements to radialClone
  • Helpers for simplified access to data from renderers including nearHitMap and stepMap
  • Bug fixes and lots of internal cleanup
  • Fixed major crash related to textureField

Details

  • Improvements / additions
    • New OPs
      • gridClone - mergeable cloning on a grid
      • nearHitMap - convenience accessor for near hit render output (#289)
      • rescaleFloatField - simplified version of rescaleField (#1071)
      • stepMap - helper for accessing step count output buffer (#289)
      • truncatedPyramidSdf
      • triPlanarCombine - combine fields based on surface normals, similar to triPlanarTextureField (#1079)
    • New OP features
      • axisRotate - default to Z axis
      • crossSection - offset field input
      • fieldRender - pixel format parameter
      • goochShadingContrib - color field inputs
      • nearestRingPointField - index variables and rotate parameter
      • pointMapRender - 3d texture output (#1072)
      • radialClone - radial and angle offset field inputs
      • rampField - added endpoint mode as an alternative to axis (#752)
      • rimContrib - angle variable
      • ringLight - color field input
      • transform - field inputs (#720)
    • Snippets
      • rimContrib
  • Fixes
    • Fix input variable settings and reorder inputs to match availability in many operators
    • Fix default settings for 2D render in inspector (#1073)
    • Fix scaling for angle variable in nearestRingPointField (#1074)
    • Fix crashes caused by textureField issue with nvidia error for branched calls to texture() (#1034)
    • Fix input label in waveField
  • Changes (potentially breaking)
    • Some inputs have been reordered, so updating OPs may cause inputs to become disconnected
  • Infrastructure / internals
    • Documentation for internals (ROP structure, shaderBuilder)
    • Remove unused global prefix code feature in shaderBuilder

Compatibility

This version of RayTK is compatible with TouchDesigner 2022.32660.

It does not require a commercial TouchDesigner license.