Continued
Bwain| No Comments »Took a break from posting to the blog, but I have been getting a lot more stuff working. Very close to parsing/compiling large parts of the Ultrafractal shader grammars. Current issue: The types can be automatically promoted/converted for assignment operators. That’s easy, since its obvious which type needs to be converted into another. The difficulty lies when dealing with relational operators, (==,<,>, etc}. In this case, we need to know which type takes precedent over another, then convert/promote the lower type. To do this, we have to establish a ranking for all types. It would be too hard to have the types insert/define their ranking at creation time. Easiest would be for the bootstrap routine to explicitly create the ranking. Then, another function in the spa namespace to handle such type promotions.
Works like a charm!!
Moving on, I would like to be able to test the Indirect Function as a simd operator. An optimal way to do this would be to define an operator, but have mixed simd and non-simd code. I’m thinking that an operator definition would have multiple functions. Some would global functions, such as creating spare parameters, link gui parameters, definte the parameter disabling behavior, handle multiparms, etc. Only one of these functions would be compiled into simd code. This would be a HUGE improvement over sidefx’ #pragma nightmare. The file format should be initially edited by the user, the compiler could verify the grammar, and compile the SIMD section, then save the entire thing into a hybrid file format: expression language + simd code. Could be really cool…. Screw python.
On second thought… this would be a pretty important feature, but its kind of a diversion at this point. Should really focus on getting the emulation rendering. This will have to wait…
Next up, control statements. if-else-endif, while.


