Peter Amstutz | 19 Aug 03:25
Favicon

property "shader"

Just got back from SIGGRAPH a couple days ago.

This year's unofficial technical theme was "the year of general  
purpose computing on GPUs (GPGPUs)".  This got me thinking about how  
the CPU controlling the GPU is  like a server and client  
communicating over a network.  Just like giving the user a high  
quality, low latency experience means moving computation to the  
client, getting better graphics performance means moving computation  
to the GPU.  What is interesting is that the programming model for  
GPUs is relatively standardized, and is based on functional  
programming principals that avoid side effects (which is what makes  
massive parallelism possible.)  They define transformations of some  
input data to some output data.

So my idea is that in VOS, one could associate a property value with  
a "property shader" which defined a transformation of that data.   
This could include typical graphics functions (vertex shaders,  
fragment shaders) but also be applied further up the graphics  
pipeline, for example to interpolate the world position of a moving  
character based on the last know position and some time step, or  
render effects like speech bubbles.  The latter case is interesting  
because it splits up the event into a semantic part (the text message  
being communicating) and a presentation part (the shader that draws it).

The interesting thing about GPUs that I didn't realize until last  
week is that they have been abstracted behind a virtual machine  
model; this means moving shader programs around the network in source  
or bytecode form is realistic since it will be compiled to the native  
architecture on the fly.  The upcoming OpenCL ("Open Compute Library"  
or "Open Computing Language") is interesting since it's an attempt to  
(Continue reading)

reed | 21 Aug 20:25
Favicon

Re: property "shader"

Posted at: http://interreality.org/phorum/read.php?2,291,292#msg-292
reed wrote:

Can you explain a bit more what you mean?  Do you mean to apply the "shader program" concept to any VOS
property? And if that shader happens to be a GPU program, then run it on the GPU?  I'd represent the shader as a
Vobject, and point it at any other property as its input and outputs. Then you can use the UI to arrange and
hook them up, chain them, etc.  

I asked you about something related a while ago but forget the specific context: could we use VOS as an
interface between the CPU world and the GPU world, by moving property data back and forth as it changed, and
more generally, by using VOS messages to send events/signals back and forth?

Reed

Gmane