├── .gitignore ├── LICENSE ├── README.md ├── docs └── screenshot.png ├── example.toe └── isfParser.tox /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Marcin Biegun 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ISF TouchDesigner 2 | 3 | This component integrates ISF shaders into TouchDesigner. 4 | 5 | Discussion thread: [https://forum.derivative.ca/t/isf-parser/10588](https://forum.derivative.ca/t/isf-parser/10588) 6 | 7 | Donations are welcome: https://ko-fi.com/martinrocker3d 8 | 9 | ## What is ISF? 10 | 11 | ISF (Interactive Sahder Format) is wrapper around GLSL pixel shaders. It standarizes way 12 | to create live video effects that can be then used in and controlled by VJ Software. 13 | 14 | Learn more about ISF here: [https://isf.video/](https://isf.video/) 15 | 16 | ## How to use it 17 | 18 | The workflow is very simple: 19 | 20 | 1. Create a Text DAT node, paste some ISF code there and connect it to isfParser component. 21 | 2. Connect your video input to the component. 22 | 3. Click "Reload" and it's done! You will receive the video output and you can play with the ISF parameters that will be now visible on the component. 23 | 24 | ![Screenshot](https://raw.githubusercontent.com/marcinbiegun/isf-touchdesigner/master/docs/screenshot.png) 25 | 26 | ## Compatibility 27 | 28 | Supported variables: 29 | 30 | ``` 31 | PASSINDEX 32 | RENDERSIZE 33 | isf_FragNormCoord 34 | TIME 35 | TIMEDELTA 36 | DATE 37 | FRAMEINDEX 38 | ``` 39 | 40 | Supported functions: 41 | 42 | ``` 43 | IMG_PIXEL() 44 | IMG_THIS_PIXEL() 45 | IMG_NORM_PIXEL() 46 | IMG_THIS_NORM_PIXEL() 47 | IMG_SIZE() 48 | ``` 49 | 50 | Supported input types: 51 | 52 | ``` 53 | float 54 | color 55 | long 56 | bool 57 | event 58 | shape 59 | ``` 60 | 61 | ## Features 62 | 63 | * ISF controls are exposed as custom parameters on Base OP 64 | * Image / video input 65 | * Custom resolution 66 | * GLSL code translation is done by a single Python script, it's 67 | rather easy to follow 68 | * Works with latest TouchDesigner 69 | * Multiple passes (1 and 2) 70 | 71 | ## What's missing 72 | 73 | * More than 2 passes 74 | * Vertex shader (`varying` not implemented) 75 | 76 | ## Changelog 77 | 78 | ### 2022.08.07 79 | 80 | * make `IMG_THIS_PIXEL` work exactly like `IMG_THIS_NORM_PIXEL` 81 | * don't crash on invalid INPUTS and PASSES 82 | * fix ISF shaders using `fragColor` variable, usage is reserved for TD 83 | 84 | ### 2022.06.24 85 | 86 | * fix `IMG_THIS_PIXEL` and `IMG_THIS_NORM_PIXEL` sampler functions 87 | 88 | ### 2022.06.02 89 | 90 | * fixed compatibility with TouchDesigner 2022.24200 91 | * added support for TIMEDELTA keyword 92 | 93 | ### 2020.05.28 94 | 95 | * fixed compatibility with TouchDesigner 2020 96 | * float parameters exposed as relative value in 0.0 to 1.0 range 97 | instead of absolute value 98 | 99 | ### 2018.06.13 100 | 101 | * initial release 102 | 103 | ## Contribuing 104 | 105 | Issue reports and pull requests are welcome. 106 | -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcinbiegun/isf-touchdesigner/a65c4b651b363871dd04fddc8f145a20c0ac7723/docs/screenshot.png -------------------------------------------------------------------------------- /example.toe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcinbiegun/isf-touchdesigner/a65c4b651b363871dd04fddc8f145a20c0ac7723/example.toe -------------------------------------------------------------------------------- /isfParser.tox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcinbiegun/isf-touchdesigner/a65c4b651b363871dd04fddc8f145a20c0ac7723/isfParser.tox --------------------------------------------------------------------------------