Releases: t3kt/raytk
Releases · t3kt/raytk
RayTK library v0.30
Highlights
- Improved material handling for pointMapRender.
- More consistent handling of axes in field inputs.
- New editor tools.
- New stackSdf.
- Lots of bug fixes.
Details
- Improvements / additions
- Editor tools (#772)
- Create switch (with / without blending)
- Expose toolkit setting for editor tools keyboard shortcut
- Combine lights with multiLight
- Create various types of cameras/lights
- New OPs
- stackSdf (#1002)
- New OP features
- curlNoiseField/noiseField/waveletNoiseField - auto coord type
- directionalLight/spotLight - rotation support
- flip - non-SDF support (when not using merging) (#996)
- iridescenceContrib/matCapContrib - shadow support
- jointSdf - direction setting (#995)
- pointMapRender - material fill modes and other material settings (#998)
- positionField - global position mode (#991)
- segmentedLineSdf - variables and radius field (#1000)
- Editor tools (#772)
- Fixes
- Fix label for composite fields editor action (#772)
- Fixing parameter optimization
- chopField - axis
- colorSwitchField/constantSwitchField - blend indices
- discSdf - axis
- helixSdf - axis, reverse
- lfoField - reverse
- mirrorAxis - flip side
- modulo1D/modulo2D - axis
- planeSdf - axis, flip
- prismSdf - axis, infinite height
- pyramidSdf - axis
- scale - use pivot
- shadowContrib - invert
- slice - axis
- spiralSdf - axis
- twist - axis
- volumetricRayCast - skip missed rays
- Fix interpretation of axes in field inputs (#992)
- arcSdf2d
- blobbyCrossSdf2d
- circleSdf
- coneSdf
- crossSdf
- cylinderSdf
- discSdf
- ellipseSdf2d
- helixSdf
- linkSdf
- mandelbulbSdf
- mengerSpongeSdf
- octahedronSdf
- pieSdf2d
- torusSdf
- goochShadingContrib - fix warm/cool colors swapped (#989)
- iridescenceContrib - fix doubled period
- jointSdf - fix doubled angle (#994)
- moduloPolar - fix swapped x and y axes (#1003)
- noiseField - clarify option labels (#987)
- specularContrib - fix phong mode (#909)
- Changes (potentially breaking)
- Infrastructure / internals
- Lots of test cleanup and optimization
- Centralized ambient occlusion calculation (#455)
Compatibility
This version of the toolkit is compatible with TouchDesigner 2022.30130.
RayTK library v0.29
Highlights
- Lots of improvements to volumetric sampling using pointMapRender.
- Support for lighting and shading in materials.
- Variables from sampledPointMat to customize shading.
- Easier access to data textures using dataTextureField.
- New 2D SDFs including eggSdf2d, hexagonalGridSdf2d, rhombileGridSdf2d, and triangularGridSdf2d.
- Faster parameter changes for lots of operators (especially menu parameters).
Details
- Improvements / additions
- New OPs
- New OP features
- axisLight - rotation (#961)
- chainSdf - length, radius, thickness field inputs (#693)
- circleWaveSdf2d - offset parameter, curl, radius, thickness, offset field inputs (#588)
- cylinderSdf - allow optimizing axis
- generalizedPolyhedronSdf - exponent field (#693)
- juliaSdf - C field input, step variables (#693)
- metaballField - coord, center, exponent, radius, weight field inputs
- pointDistanceField - coords and center field inputs (#978)
- pointMapRender - lighting and shading support (#981), variables for data position
- revolve - radial offset, axis offset field inputs (#812)
- sampledPointMat - variables equivalent to modularMat, surface color support
- triangleSdf2d - radius and size field inputs (#588)
- variableReference - show field name in label (#980), clean up parameters
- waveField - auto coord type
- Faster parameter switching (especially menus) (#970)
- axisDistanceField
- bend
- colorRampField
- extrude
- headSdf
- iteratedTransform
- kink
- logPolarRepeat
- mirrorAxes
- mirrorOctant/mirrorQuadrant
- mobiusTransform
- modulo1D/modulo2D/modulo3D/moduloDistance/moduloPolar
- quadTreeRepeat
- radialClone
- remapCoords
- revolve
- rotate4D
- sampledPointMat
- slice
- textureField
- truchetTile
- Editor tools (#772)
- crossSection and projectPlane
- Reducing unnecessary parameters (#907)
- Fixes
- editor tools - fix incorrect attachment of specular/diffuse to modularMat without a primary input
- linkedCamera - fix creating linked cameraViewport (#979)
- modularMat - fix shadows not being activated when shading elements are not directly connected to modularMat (#982)
- pointDistanceField - fix table buildExclude bug
- Changes (potentially breaking)
- adjustColor - separated out the hue/saturation and brightness/contrast field inputs
- remove editor tools related to parameter locking
- Infrastructure / internals
RayTK library v0.28
Highlights
- Core improvements - Vulkan specialization constants improve the performance of changes to menu parameters. Not all operators have been updated but many have.
- New operators including 4D rotation, hilbert curves, circular fill repetition, and more!
- New field inputs for lots of operators!
Details
- Improvements / additions
- New OPs
- New OP features
- bandField - faster axis/blending/reverse changes, allow selecting axis for coordinate input field
- gridSdf - thickness and spacing field inputs (#693)
- matCapContrib - rotation param and field input
- mobiusRingSdf - radius field input (#693)
- moduloSpherical - variables, shift field, offset field, repetitions field (#746), mirroring
- pbrMat - enable reflection setting (#971)
- petalSdf - thickness and radius field input (#693)
- polyhedronSdf - radius, face radius, segment radius, segment size, vertex radius, vertex size, uvw field inputs (#693)
- prismSdf - variable support (#950), arbitrary side count (#951), UV coordinates (#952)
- raymarchRender3D - faster changes for max dist, surface dist, step limit, near hit, pass counts (#970)
- solidAngleSdf - radius, angle field inputs (#693)
- stepField - faster axis/blending/reverse changes, allow selecting axis for coordinate input field
- sweep - path Sdf / position variables
- uvField - auto coord mode
- waveField - faster axis changes, allow selecting axis for coordinate input field
- Snippets (#132)
- assignColor
- assignUV
- moduloSpherical
- Editor actions (#772)
- show fields in variable reference menu
- Fixes
- directionalLight shadow distance bug (#960)
- impulseFn error (#959)
- lfoGenerator channel count bug (#955)
- pointMapRender coord type error for SDFs (#956)
- pointMapRender macro error
- pyramidSdf fix broken height field
- variableReferences broken during snippet build (#954)
- variableReference default value error
- variable typedef macro error (#957)
- Changes (potentially breaking)
- mobiusRingSdf - remove support for 1D coords in thickness field (same thing can be done with variables), and stop combining the thickness parameter with the field (it now only uses field or parameter).
- moduloSpherical - swap the x and y axes for the input, so it makes more sense (Y = outward)
- Infrastructure / internals
- Remove code filtering pragmas since they weren't helping (#710)
- Remove incomplete support for using separate uniforms for parameters (#863)
- Vulkan specialization constants! (#970)
- Type-prefixed symbols to share things like menu option names across instances within a scene
- Use opState approach for variables (#939)
Compatibility
RayTK 0.28 is compatible with TouchDesigner 2022.29530.
RayTK library v0.27
Highlights
- Internal overhaul that should improve performance when creating / editing / deleting operators
- Lots of new OP snippets
- Optimized mode for some operators (especially composeSdf)
Details
- Improvements / additions
- New OPs
- providePosition
- shadingProperty
- truchetPattern (#948)
- New OP snippets (#132)
- axisLight
- boxSdf
- capsuleSdf
- cartesianToPolar
- cellTileField
- combine
- crossSdf
- discSdf
- edgeCombine
- geodesicSdf
- iridesenceContrib
- logPolarRepeat
- matCapContrib
- rangeTransform
- reflect
- reorderCoords
- segmentedLineSdf
- skyLightContrib
- softShadow
- spiralZoom
- texture3dField
- translate
- trapezoidSdf2d
- truchetPattern
- Optimized mode for OPs (#943)
- arrange
- combineFields
- compositeSdf - significant performance improvement
- extrude - replaced implementation (no Optimize toggle)
- rotate
- New OP features
- compositeFields - new modes (atop, over, under, xor), blend field
- cylinderSdf - hollow mode, thickness field
- hexagonalWeavePattern - color settings, variables
- iridesenceContrib - spread param, period param
- lfoGenerator - value offset param
- lineSegmentSdf2d - thickness, variable
- prismSdf - hollow mode, thickness field
- truchetPattern - alternate formats and variables (#948)
- waveWarp - phase offset param
- vectorToFloat - length(xy) mode
- Editor tools (#772)
- add depthMap
- Inspector individual ROP code viewing
- Added developer/systems documentation (#31)
- New OPs
- Fixes
- Changes (potentially breaking)
- Update to TD 2022.28040
- Remove 1D coord support from fields in iteratedTransform
- Instead, use variableReference to access iteration index
- Add shadow field parameter in raymarchRender3d, which will eventually replace the Shadow input
- Infrastructure / internals
- Replaced large portions of opDefition and shaderBuilder with more Python-based implementations. (#939)
- Significant reduction of the number of OPs inside each ROP
- Reduced build size
- Restructured shader construction code to perform more in a single operation vs spreading it across many operators.
- Removal of unused infrastructure
- Cleanup in shared components including aggregateCodeGenerator, codeSwitcher, combiner, transformCodeGenerator, waveFunction
- Remove support for global macros in shaderBuilder
- Alternative "Optimize" mode for some operators that uses codegen
- Produces only the needed parts of code and inlines as much as possible
- Remove unnecessary supportDetector
- Replaced large portions of opDefition and shaderBuilder with more Python-based implementations. (#939)
Compatibility
RayTK v0.27 is compatible with TouchDesigner 2022.28040.
RayTK library v0.26
Highlights
- Operator snippets! Usage examples that show different ways to use operators.
- New pattern generators (tilingPattern, snubQuadrilePattern) and field-based pattern controls
- New OP (composeSdf) for building SDFs composed of multiple other SDFs
- New iridescence shading element
- New pattern operators and field inputs for pattern operators.
Details
- Improvements / additions
- OP Snippets (#132, #845)
- New tox containing examples of how to use operators
- combine: switch
- convert: extrude, revolve
- field: atmosphereField, axisDistanceField, bandField, colorRampField, colorSwitchField, metaballField, multiPointDistanceField, sdfField
- filter: adjustColor, elongate, flip, instance, invert, kink, knife, mirrorOctant, mobiusTransform, modulo1D, onion, quantizeValue, restrictStage, round
- light: lightVolume, pointLight, volumetricRayCast
- material: diffuseContrib, toonShadingContrib
- pattern: brickPattern
- sdf: boxSdf, coneSdf, cylinderSdf, planeSdf
- sdf2d: lineSegmentSdf2d, pieSdf2d
- New field inputs (#812, #588, #921, #693)
- brickPattern - blending, shift, thickness
- gyroidSdf - bias, phase1-2, thickness
- hexagonalGridPattern - blending, thickness, colors
- hexagonalWeavePattern - thickness
- mengerSpongeSdf - cross scale, box scale, step offset
- rosettePattern - glow, radius, spread
- spiralZoom - phase, twist
- weavePattern - thickness
- New ops
- New op features
- hexagonalGridPattern - separate blending and thickness, raw distance output, color settings (#254)
- limitField - single-sided limit modes (#931)
- mengerSpongeSdf - step offset, step variables (#698)
- metaballField - auto coord type
- multiLight - bounding volume limits (#908)
- multiPointDistanceField - auto coord type
- raymarchRender3d - option to disable showing background color for ray misses
- reorderCoords - option to zero out axes (#213)
- rosettePattern - spread and radius
- OP Snippets (#132, #845)
- Fixes
- Fix rotate angle scaling in orthoCamera (#918)
- Fix coord type collapsing in projectPlane (#920)
- Show errors out both outputs of render2d (#922)
- Fix how render depth enable/disable is handled in raymarchRender3d
- Fix logPolarRepeat not applying spatial remapping (#928)
- Fix Swap Inputs not working in arrange
- Changes (potentially breaking)
- Disable shadows by default in raymarchRender3d
- Remove stage init code support from customOp (#933)
- Infrastructure / internals
- Added support for adding mode-specific macros in codeSwitcher
- Toolkit editor support for opElements (#925)
- Lots of test cleanup
- Remove bendRay and ray modifier functionality
- Start a separate project file for op snippets (#132)
- Remove support for stage init code (#933)
- Remove unused settings in inputHandler (#933)
- Add a build process for op snippets (#132)
- Build process crash reduction (#935)
- Spreading deletions over more frames
- Reduce unnecessary cruft in common infrastructure (#933, #935)
- Move inputValidation out of inputHandler into opDefinition (#933)
Compatibility
TouchDesigner version: 2022.26590
RayTK library v0.25
Highlights
- Updated to TD 2022.25370 Vulkan build.
- Lots of bug fixes.
- New field inputs for lots of operators.
- Improved blending options in switch.
Details
- Improvements / additions
- New field inputs (#812, #588)
- adjustColor - brightness/contrast, hue/saturation
- flip - shift, offset
- injectObjectId - id
- jointSdf2d - bend, length, thickness
- kink - amount, offset, spread
- knife - offset
- kochSnowflakeSdf2d - steps
- modularMat - more shading elements
- rotateNormals - rotate
- stepField - values
- wedgeSdf2d - end points, center point
- Variables
- normalized cell coordinates for modulo1d/2d/3d (#898)
- pbrMat - light color, light position, surface color, surface uv, shaded level, surface normal
- Show toolkit version in palette header
- New op features
- New field inputs (#812, #588)
- Changes (potentially breaking)
- Updated to TD 2022.25370 Vulkan build. The toolkit will no longer be compatible with pre-Vulkan TD builds.
- Remove deprecated light and camera parameters in raymarchRender3d. The
Light
parameter is no longer supported. To get similar functionality use alinkedLight
. - Remove deprecated ops
- goochMat - replaced by goochShadingContrib / modularMat
- smoothUnion - replaced by combine
- Fixes
- Fix incorrect selection of default param page after palette creation and in toolkit editor (#109)
- Fix merge type bug in flip (#892)
- Fix param enable states in generalizedPolyhedronSdf (#896)
- Fix handling of float fields in assignColor (#894)
- Fix defaultExpr being set to invalid expression when geodesicSdf is created (#895)
- Fix normals output in pointMapRender (#904)
- Fix error tolerance in variableReference menu sources
- Fix render2d erroring when no input is attached (#911)
- Fix default alignment for render2d (#911)
- Fix coord type menu labels in noiseFIeld (#913)
- Fix error with camera / light return types in switch
- Fix coord mode handling in chopField (#914)
- Fix outdated TD palette components (#912)
- Infrastructure / internals
- Add development-only network boxes in infra components
- Replace all remaining uses of old param list tables, and param opDef settings
- Incomplete changes to how parameters are collected into vectors, current inactive (#907)
- Cleaning up lots of tests
- Reduce use of opFind DATs in ROPs and development tools
RayTK library v0.24
Highlights
- Parameter optimization. For many parameters, if they're marked as read-only, RayTK will bake them into the shader.
- This significantly improves performance, but means that if they change the shader has to recompile.
- The new
sceneState
component helps with switching scenes between a "locked" optimized state and an "unlocked"
editing state.
- New SDFs and other operators.
- New parameters and field inputs.
Details
- Improvements / additions
- Faster parameter switching (#571)
- combine, combineFields, compositeFields, simpleDiff, simpleIntersect, simpleUnion, smoothUnion
- colorRampField
- modulo1d, modulo2d, reflect
- crossSdf
- lfoField, timeField, timeShift
- Conditional parameter optimization (#571, #629)
- Most operators
- Variable support
- New parameters
- Editor actions (#772)
- Sub-menus for diffuseContrib and specularContrib
- Action for combining SDFs with arrange
- Parameter locking actions (#869)
- Support 3+ inputs in combineFields
- Scene locking tool (sceneState) (#869)
- Field inputs
- New operators
- Faster parameter switching (#571)
- Changes (potentially breaking)
- Changes to default unit (ratio instead of radians) in polarCoordField and cartesianToPolar
- Change to input numbering in switch when some inputs are missing (#860)
- Fixes
- Fix 2d coord handling in iteratedTransform (#846)
- Fix coord type handling in colorRampField (#849)
- Fix amplitude multipliers in lfoGenerator (#851)
- Fix parameter optimization in diffuseContrib and specularContrib (#852)
- Fix depthMap's buffer selection (#855, #436)
- Fix field input on magnet (#861)
- Fix type macro error in exposeValue
- Fix enable bypass in radialClone (#882)
- Infrastructure / internals
- opElements which generalize and automate the code gen features of codeSwitcher, combiner, aggregateCodeGenerator, etc.
- Include in yaml specs
- Stop using parameter part aliases (except for special params) (#857)
- Inline typedefs by default
- New table-based parameter definitions.
- opElements which generalize and automate the code gen features of codeSwitcher, combiner, aggregateCodeGenerator, etc.
Compatibility
This version was built with TouchDesigner 2021.16410. It may work with more recent experimental builds but it hasn't been tested.
RayTK library v0.23
Highlights
- Matcap materials
- Multiple light sources!
- Faster parameter changes for lots of operators
Details
- Improvements / additions
- New ops
- New feaures in existing ops
- Infinite height option for cylinderSdf and prismSdf (#648)
- Enable toggles in arrange (#755), mostly deprecating mergeToggle
- Shadow toggles in axisLight, directionalLight, linkedLight, pointLight, spotLight (#711)
- Index variable in arrange
- Variable support basicMat
- Coord field input in axisDistanceField (#829)
- More flexible variable types and access to fields (#833)
- Faster parameter changes (#629, #586)
- instance - combine modes
- axisLight, pointLight, spotLight - attenuation (#405)
- boxSdf - infinite axis
- axisDistanceField, axisLight, coneSdf, cylinderSdf, discSdf, gridSdf, helixSdf, planeSdf, polarCoordField, prismSdf, pyramidSdf, slice, spiralSdf, spiralZoom, twist - axis
- flip, orthoCamera - direction
- textureField - plane
- Changes (potentially breaking)
- Changes to variable type handling may cause compatibility issues for variableReference operators. To fix this, re-create them, which will assign the correct types.
- The scale operator no longer rescales float values, only coordinates (#840)
- Removed deprecated operators
- ggxMat, orenNayarMat, sdfToFloat (replaced with sdfField)
- Mark operators as deprecated
- normalField
- phongMat
- uvField
- Fixes
- Infrastructure / internals
Compatibility
This version was built with TouchDesigner 2021.16140. It may work with more recent experimental builds but it hasn't been tested.
RayTK library v0.22
Highlights
- Faster enable/disable for lots of filters
- New 2D and 3D SDFs
Details
- Improvements / additions
- New ops
- New field inputs (#812)
- New parameters
- transformSequence - reverse order (#819)
- Runtime bypass - faster enable/disable for filters (#755)
- adjustColor
- assignColor
- assignUV
- bend
- cartesianToPolar
- elongate
- extend
- fieldFunction
- flip
- fold
- instance
- iteratedTransform
- invert
- kink
- knife
- limitField
- mirrorAxes
- mirrorOctant
- mirrorQuadrant
- mobiusTransform
- modifyNormals
- modulo1D / modulo2D / modulo3D / moduloDistance / moduloPolar / moduloSpherical
- onion
- polarToCartesian
- quadTreeRepeat
- quantizeCoords / quantizeValue
- radialClone
- rangeTransform
- reflect
- remapCoords
- rescaleField
- restrictStage
- rotate
- rotateNormals
- round
- scale
- slice
- sphericalMobiusTransform
- spiralZoom
- transform
- transformSequence
- translate
- twist
- uvTransform
- waveWarp
- basicMat / goochMat / modularMat / pbrMat / phongMat / reflectMat / refractMat / sampledPointMat
- UV support in cylinderSdf (#830)
- Documentation
- Added optimization guide (#750)
- Changes (potentially breaking)
- Remove deprecated operators
- spin
- Change how rotate handles 2D coords (#821)
- This may cause behavior changes for 2d.
- Instead of automatically using axis-based rotation when the input is 2d, instead use the mode parameter to choose between types (like for 3d). For 3d, only the Z axis rotation is used.
- Remove deprecated operators
- Fixes
- Infrastructure / internals
- Part way through migration to yaml-based ROP definitions (#76)
RayTK library v0.21
Highlights
- Editor actions are contextual actions available in a menu using the new
ALT+SHIFT+R
shortcut. They include things like:- Add common material elements when a
modularMat
is selected. - Add a
lookAtCamera
orpointLight
when araymarchRender3d
is selected. - Combine selected SDFs or fields.
- Navigating to the source of a
variableReference
. - Converting a vector field to a float field, and vice versa.
- Exposing and binding parameters on the parent COMP.
- Adding animation to parameters.
- Add common material elements when a
- Transform sequences are a new way to apply groups of transforms to spatial coordinates or uv coordinates, including support for repeating the transforms in a loop! It's like a much more flexible version of
iteratedTransform
. - Standardized SDF combine options across various ROPs that combine SDFs. This means that the full features like stair union with offset control are available in ROPs like
flip
orradialClone
. - Standardized wave function options across various ROPs. This means that
waveField
,waveFunction
,lfoField
, etc all have the same wave shape options. - Control utility components are a set of general-purpose tools that can be used with RayTK or non-RayTK operators. Most of them have associated editor actions, including:
lfoGenerator
which can be applied to any numeric parameter using the "Animate with LFO" action.speedGenerator
which can be applied to any numeric parmaeter using the "Animate with Speed" action.
Details
- Improvements / additions
- Variables (#574)
- arcSdf2d
- discSdf
- mandelbulbSdf
- provideVariable - support Sdf values
- New ops
- New field inputs (#588, #693, #806)
- arcSdf2d - orientation, aperture
- cellTileField - coords
- diffuseContrib - roughness, albedo
- horseshoeSdf2d - angle, radius, length
- linkSdf - length, radius, thickness
- mandelbulbSdf - shift
- mirrorAxes - flip sides (#641, #668)
- onion - iterations, thickness
- provideVariable - value
- specularContrib - shininess, roughness, fresnel
- tetrahedronSdf - scale
- trapezoidSdf2d - height, width, points
- New parameters
- Standardized SDF combining across the toolkit, with new modes and parameters (#784)
- arrange
- combine
- flip - compatiblity warning: this changes the menu options for the Merge Type parameter, so updates may reset it
- instance
- polyhedronSdf
- radialClone - compatiblity warning: Merge Type parameter opions changed
- Standardized wave functions across the toolkit, with new shapes and parameters (#787)
- lfoField
- waveField
- waveFn
- waveVectorField
- waveWarp
- additive square waves
- wave shape function inputs
- Editor actions (#772)
- Append null (works for ROPs or regular CHOP/DAT/etc)
- Inspect
- Update OPs
- Convert SDF to float
- Convert vector to float for various parts
- Rescale field
- Rescale field with conversion to vector
- Add diffuseContrib/specularContrib for modularMat
- Add lookAtCamera/pointLight for raymarchRender3d
- Extrude/Revolve 2D SDF
- Colorize 2D SDF
- Combine 2 SDFs
- Combine 2 fields
- Reference variable
- Animate param with speedGenerator/lfoGenerator
- Expose parameter on parent COMP
- Customize shader config
- Add render2D for 2D SDFs
- Go to
- Variable source
- Variable references
- Control utility components (#788)
- lfoGenerator
- paramFilter
- speedGenerator
- Custom and debug output buffers in render2d
- Transform sequences / loops (#791)
- bend
- fold
- kink
- mirrorAxes
- mirrorOctant
- mirrorQuadrant
- rangeTransform
- reflect
- rotate
- scale
- transform
- twist
- waveWarp
- Vector output for lfoField when wave function input returns a vector
- Variables (#574)
- Changes (potentially breaking)
- Remove deprecated operators
- combineChamfer, combineColumns, combineStairs, edgeEngrave, edgeGroove, edgePipe
- Remove deprecated operators
- Fixes
- Fix iteration index bug in instance operator (#785)
- Fix height field bug in prismSdf
- Fix coordinate type bug in stepField
- Fix axis swaping in discSdf - compatibility warning, axis behavior changed
- Fix bug with filter text and shortcuts in palette (#795)
- Fix 2d support in mirrorAxes (#799)
- Fix broken field input in scale (#805)
- Infrastructure / internals