User Tools

Site Tools


base:spritevectors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
base:spritevectors [2016-12-09 17:17] – [Adding the Wurstglanz] bitbreakerbase:spritevectors [2020-07-28 08:42] (current) bitbreaker
Line 1: Line 1:
 ===== Sprite vectors ===== ===== Sprite vectors =====
  
-Basically one can also draw edges by displaying sprites and manipulating their x-position per line. If done so from left to right and with rising priority, several edges can be stacked and thus a vector being build. The rightmost edge then needs to be drawn in background color. But faces might not get bigger than 24 pixels and higher than 21 pixels, a bit small. Also other restrictions hit in, like badlines which makes it impossible to manipulate all sprites each rasterline.+In 2010 Glance presented a vector in there Demo Snapshot, that updated at 50 frames per secons. The technique used therefore was originally named SMGF (Sprite Masking Gap Filling), yet only black blackground was used and no x/y-movement. 
 + 
 +So as you see, basically one can also draw edges by displaying sprites and manipulating their x-position per line. If done so from left to right and with rising priority, several edges can be stacked and thus a vector being build. The rightmost edge then needs to be drawn in background color. But faces might not get bigger than 24 pixels and higher than 21 pixels, a bit small. Also other restrictions hit in, like badlines which makes it impossible to manipulate all sprites each rasterline.
  
 As a first step, we can expand all sprites in X and Y to achieve more effect area, but this is still not satisfactory. As we inspect the shape of a cube, we notice, that it maximum has 3 edges on the left side and a final edge at the right to separate it from the background. So if we manage to display those 4 edges with 4 sprites, we are already on a good way and only need to change 4 x-positions per rasterline, do we? As a first step, we can expand all sprites in X and Y to achieve more effect area, but this is still not satisfactory. As we inspect the shape of a cube, we notice, that it maximum has 3 edges on the left side and a final edge at the right to separate it from the background. So if we manage to display those 4 edges with 4 sprites, we are already on a good way and only need to change 4 x-positions per rasterline, do we?
Line 94: Line 96:
  
 The nifty part is to write a data exporter that runs through all edges from left to right and finds out about the right order to build up the object with sprites with the right order/priority. It also calculates the dimensions of the gap sprites. Also all data should be as tiny as possible. In fact, it uses two passes (slope generation, edge sorting) and is that butt ugly and bad documented that i do not know if it is good to share, and that means something :-D But it is worth an exercise in our nowadays world of cross-development. The nifty part is to write a data exporter that runs through all edges from left to right and finds out about the right order to build up the object with sprites with the right order/priority. It also calculates the dimensions of the gap sprites. Also all data should be as tiny as possible. In fact, it uses two passes (slope generation, edge sorting) and is that butt ugly and bad documented that i do not know if it is good to share, and that means something :-D But it is worth an exercise in our nowadays world of cross-development.
- 
-====== Adding the Wurstglanz ====== 
- 
-to be continued soon... 
  
 ====== Future work / outlook ====== ====== Future work / outlook ======
  
 If the badline-supression is done per frame and not per line (but black background then) the ratio of edge building sprites and gap sprites can be shifted towards more edges, as more x-position writes can happen. Also this technique peaks on frames where a lot of nearly 45° slopes happen, else quite some rastertime is left, but on peaks (SID included) only 3 rasterlines are left at maximum size of 160x160. Also if going one pixel beyond in size, 3 gap sprites are needed for a single face and we run out of sprites anyway :-) If the badline-supression is done per frame and not per line (but black background then) the ratio of edge building sprites and gap sprites can be shifted towards more edges, as more x-position writes can happen. Also this technique peaks on frames where a lot of nearly 45° slopes happen, else quite some rastertime is left, but on peaks (SID included) only 3 rasterlines are left at maximum size of 160x160. Also if going one pixel beyond in size, 3 gap sprites are needed for a single face and we run out of sprites anyway :-)
 +
 +====== Adding the Wurstglanz ======
 +
 +to be continued soon...
base/spritevectors.1481300236.txt.gz · Last modified: 2016-12-09 17:17 by bitbreaker