{"id":98,"date":"2008-02-27T22:33:06","date_gmt":"2008-02-27T11:33:06","guid":{"rendered":"http:\/\/www.vectorstorm.org\/2008\/02\/27\/directions-for-the-future\/"},"modified":"2008-02-27T22:33:06","modified_gmt":"2008-02-27T11:33:06","slug":"directions-for-the-future","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2008\/02\/27\/directions-for-the-future\/","title":{"rendered":"Directions for the future"},"content":{"rendered":"

So I’ve been thinking a little about what I want to do in the future, and have picked out a few possibilities.<\/p>\n

I’m very interested in implementing “shaders” for the VectorStorm virtual hardware.\u00a0 These wouldn’t be OpenGL shaders (we already use one of those for the bloom effect, and there’s a disabled one for the overlays), but rather would be the equivalent of that sort of shader, performed on the virtual VectorStorm GPU.\u00a0\u00a0 (Someday I might set up VectorStorm to execute using two threads;\u00a0 one emulating the CPU, and one the GPU, and these shaders would run on the GPU thread, while all other game code ran on the CPU thread..\u00a0 but that’s all too much like hard work right now, so I’m unlikely to do it any time in the near future.\u00a0 The important point is that if I wanted to, I could<\/em>.)<\/p>\n

Like how OpenGL has vertex and fragment shaders (and DirectX has vertex and pixel shaders), I think there would be two types of VectorStorm shaders.\u00a0 The first type would be a vertex shader, and would work just like DirectX\/OpenGL’s vertex shaders;\u00a0 the shader code receives each vertex to be rendered, one at a time along with color and other information, and spits out the final vertex to be rendered.\u00a0 A shader like this could trivially make a vsSprite draw entirely in green, or fade out, or squash and stretch or distort in other interesting ways.<\/p>\n

The trickier bit is the\u00a0 equivalent of the pixel\/fragment shader.\u00a0 I think that this would be a “Display List Shader”;\u00a0 when you activate a display list shader to the moment you deactivate it, that section of the display list is passed to the shader, and the shader gets to fully rewrite it, and it’s the rewritten version that gets rendered.\u00a0\u00a0 This would allow more complicated effects, such as distortions that need to subdivide lines on the objects it’s operating on, or effects which need to make use of more state data than merely what’s held in a single vertex.<\/p>\n

But I’ve also been interested by discussions about sprite generators, and adapting those concepts to the vector shapes used in VectorStorm;\u00a0 write a little shooter game which automatically creates different types of enemy ships in some sort of meaningful way, so that you play a subtly different game every time you play.<\/p>\n

And finally, of course, I still want to hook up a placement system, so that someday I might start work on a game which actually has real levels.\u00a0 That’s probably still a long way off, though.\u00a0 There’s never any shortage of fun tech to think about!\u00a0 :)<\/p>\n

On the “Game in a Week” front, ordinarily I’d like to do another one next week, but I suspect that it’s going to be a really busy week at work for me, so I’ll probably put it off for an extra fortnight.\u00a0 I’m sure that I’ll be putting up some fun little toys between then and now, though.<\/p>\n","protected":false},"excerpt":{"rendered":"

So I’ve been thinking a little about what I want to do in the future, and have picked out a few possibilities. I’m very interested in implementing “shaders” for the VectorStorm virtual hardware.\u00a0 These wouldn’t be OpenGL shaders (we already use one of those for the bloom effect, and there’s a disabled one for the…<\/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-1A","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/98"}],"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=98"}],"version-history":[{"count":0,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/98\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=98"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=98"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}