{"id":100,"date":"2008-03-01T21:17:30","date_gmt":"2008-03-01T10:17:30","guid":{"rendered":"http:\/\/www.vectorstorm.org\/2008\/03\/01\/vectorstorm-shaders\/"},"modified":"2008-03-01T21:17:30","modified_gmt":"2008-03-01T10:17:30","slug":"vectorstorm-shaders","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2008\/03\/01\/vectorstorm-shaders\/","title":{"rendered":"VectorStorm Shaders"},"content":{"rendered":"

\"Jitter<\/a>It’s been too long since I posted a screenshot.<\/p>\n

Lucky that I’ve been working on something interesting to look at! Here’s the output of my very first VectorStorm virtual shader.<\/p>\n

Inside the simulated VectorStorm hardware, shaders are enabled inside the display list;\u00a0 when you enable a shader, the rest of the display list is passed to the shader, and the shader uses the display list as input, and outputs a different display list which the renderer then draws.<\/p>\n

This is a ‘jitter’ shader.\u00a0 It’s the sort of thing you occasionally see in music-based games where shapes shake in time to the beat.\u00a0 Although here it’s just shaking continually, as it’s only a proof of concept.\u00a0 It takes the lines which are queued up to render, subdivides them if necessary (as with the extremely long horizontal lines of the button frames in this image), and then adds random offsets to make the lines appear to be ‘shaky’.<\/p>\n

I’m now wondering whether it’ll really be necessary to implement the ‘vertex’ shaders I talked about before.\u00a0 Bizarrely, they’d actually be more difficult to implement in the engine, though they’d be easier for a game coder to write, since they don’t require as much in-depth knowledge of the internals of display lists.<\/p>\n","protected":false},"excerpt":{"rendered":"

It’s been too long since I posted a screenshot. Lucky that I’ve been working on something interesting to look at! Here’s the output of my very first VectorStorm virtual shader. Inside the simulated VectorStorm hardware, shaders are enabled inside the display list;\u00a0 when you enable a shader, the rest of the display list is passed…<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[3],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/po9WK-1C","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/100"}],"collection":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":0,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}