I think you are confused about exactly what VectorC brings to the table. I ASSuME it was implemented using the CPU's Streaming SIMD Extensions (SSE). It is somewhat analogous to implementing a software GPU paradigm... efficently executing the SAME 'function()' over a large dataset. It should have the greatest impact on FlowFields/Colorization since their dataset size is ALWAYS directly proportional to screen resolution.
With the original GForce 'language' implementation, the number of columns were (pretty much anyway) restricted to 1, a single value, or NUM_S_STEPS columns, BUT ALWAYS A SINGLE ROW. VectorC inherently deals with data stuctures in terms of any number of Columns AND Rows.
This is logically advantageous when dealing in the world of analytic geometry (read: WaveShapes). When I write code, I ASSuME the VectorC implementation produces the IDEAL solution, i.e., describing(coding) my intentions in the most efficient manner, generates the best run-time solution... which may, or may NOT be true (or even relevant as far as WaveShapes are concerned!). You may like to 'think' that an 'optimizing' compiler always works out the details in the most efficient manner(, but I am smarter than that).
Many of the original GForce 'language' functions have direct analogs with those implemented in VectorC, with the exception they are iterrated over each row. SOME of the original GForce functions still operate ONLY on a single row, and really need some attention... BUT FOR THE MOST PART, if it logically makes sense, it works the way I would expect. I could make a case, that 'Cvars' are no longer really necessary under the VectorC implementation. It would be nice, if there were a variable class that evalutes once per frame, no matter the task count.
FlowFields and WaveShapes are two very different animals. Exceptional FlowField creation requires a true mastery of trigonometry.
Code: Select all
// BORING Examples
Aspc=1
ConB=1
A0="1/(NUM_S_STEPS-1)" // s-Step increment (Not used here)
A1="2*s -1" // { -1 ... 1 }, over NUM_S_STEPS
A2="A1 * 4" // { -4 ... 4 }, over NUM_S_STEPS
// REMEMBER, that variables MUST be numbered CONTIGUOUSLY, starting with 0
// or things 'may' mysteriously stop working, without errors
//
// If you want an PERFECT 90 degree step,
// generation of A1 is MORE complicated
// (I left that exercise for you ;0)
X0="A1"
Y0="sqwv(A2)"
// X1="A1" // UNCOMMENT for display
// Y1="floor(A2)/4" // UNCOMMENT for display
// X2="A1" // UNCOMMENT for display
// Y2="ceil(A2)/4" // UNCOMMENT for display
Vers=500
Google("Floor and ceiling functions - IPFS")
I will be out of the US for a couple of weeks...
you are on your own
later