Project index | About author | License of all this | More about RinomXE

RinomXE, a basic Euclidean 3 or more dimensional graphics thing based on averages. Started 5/20/2025.

Ruby

Peek 3 | Download 3 | Semicolons peek 3 | Semicolons download 3 | Peek 2 | Download 2 | Semicolons peek 2 | Semicolons download 2 | Peek | Download | Semicolons peek | Semicolons download | Test peek | Test download

Javascript

Peek | Download | Minified peek | Minified download | Test peek | Test download

Go

Peek | Download

Slang shaders (non-working)

Peek d to 2d | Download d to 2d | Peek merge sort | Download merge sort | Peek offset 2d | Download offset 2d | Peek pair sort | Download pair sort | Peek reverse x | Download reverse x | Peek reverse y | Download reverse y | Peek z distances | Download z distances

Slang shaders 2 versions

copy back | Download copy back | Peek d to 2d | Download d to 2d | Peek merge sort | Download merge sort | Peek offset 2d | Download offset 2d | Peek pair sort | Download pair sort | Peek reverse x | Download reverse x | Peek reverse y | Download reverse y | Peek z distances | Download z distances

About

RinomXE as a derivative of StinomXE started 5/1/2025. You can see in each file when they were finished. As of 5/20/2025, RinomXE Ruby, Javascript, and Go are tested and I also have Slang shaders untested. If you have any questions you may direct them to norvel4@gugquettex.com. These have draw order work on averages for z and if not ordered by that then average of 2d distance from center of view is used. This will exclude ordering anything that has a point that cannot be drawn. Note that Ruby and Javascript are too slow for normal use unless you compile or otherwise speed up them. 7/15/2025, Today I made Ruby 2 versions, they work with old tests, and it is clear I need to work on Slang shaders, I tested. 7/22/2025, 8:10PM, RinomXE Slang release, untested in real life but should work. 7/23/2025, 11:31AM, RinomXE 3 released and RinomXE Slang improved. 7/25/2025, 9:37PM, Made Slang work but very slow because of last like pair. 8/8/2025, I made RinomXE Slang work. It is tested, slow, but operational. 9/12/2025, 4:15PM, Today I made the more dimensional part work in Slang 2 versions and updated. If you want first versions working, "number" variable should be set like in the loop in d to 2d.

Tutorial for all but Slang:

To start you must instantiate a RinomDrawXE. Then you input points, arrays of a set single size for all, and shapes, indices of points to use to make a shape. After that and in your own order, call adjustments such as reverse x or y or offset and set draw order functions. After that is all done, use points2d and draw order variables, draw order is like draw from point index variable to 0 in that order and refers to your shapes, use your shape indices to find 2d points and draw them.

Tutorial for Slang shaders 1:

To start, put your view point in first point slot and view plane center point in second slot for points buffer. Place your shapes by making an index per each vertex in shapes buffer. With that, place shapeEnds like 0 is 0, 1 is 1 after last index to include for first shape, 2 is 1 after last index to include for second shape and so on until last is your end of valid inputs plus one. This is your input. [@viewPoint[@xyz[0]]-@viewAtPoint[@xyz[0]],@viewPoint[@xyz[1]]-@viewAtPoint[@xyz[1]],@viewAtPoint[@xyz[2]]-@viewPoint[@xyz[2]]] from Ruby, this is how to set constants in your big uniform. xyz is in its order and each index for a part. unitSize is number of floats in a point. pointNumber is number of points. shapeNumber is number of shapes.

You should once you have that call in order, d to 2d, offsets and reverse in your logical order, then z distances, pair sort first time or any time shapeNumber changed or if you want to, then call merge sort repeatedly. For merge sort, start with 1 as step unless using pair sort, then start at 2. Double step until it is greater than or equal to shapeNumber. Call d to 2d with number of points number of threads, same for offset 2d and reverse x or y, and half that for pair sort and number of shapes of threads for z distances and half shapeNumber divided by step for merge sort. shouldRound is 0 for rounding and anything else to not. After all of this, drawOrder contains an index of a shape per each and points2d is each index a point with them arranged same as original points. Use shapes accordingly.

Tutorial for Slang versions 2:

Do like 1 version but tempOrder is like drawOrder, call merge sort with enough threads for one per shape, and it is step[0] was step and step[1] should start at 0 and go to 1, then back to 0 switching each time. Do similarly to a call to merge sort now if you need copy back for elements with a copy back call with enough threads to have one per shape.

Video demo, 2101 shapes in Ruby.

X E.