Re: [css-shaders] CSS shaders for custom filters (ACTION-3072)

On Oct 5, 2011, at 9:27 PM, "Robert O'Callahan" <robert@ocallahan.org> wrote:

> On Thu, Oct 6, 2011 at 11:10 AM, Chris Marrin <cmarrin@apple.com> wrote:
> We do that by reverse mapping the mouse positions from global into local coordinates. That's easy with a single (or composite) transform. It's impossible for pixels that are altered by a vertex or fragment shader. You'd essentially have to run the shaders backwards to get them to tell you where a given point is in the local coordinate space. I know of no hardware that can do that. I haven't seen it anyway...
>  
> I think we can give up on having event handling account for the geometric effects of fragment shaders. We should encourage authors to change geometry using vertex shaders instead.
> 
> In principle, we can have event handling account for the effects of a vertex shader. Once you've computed the transformed mesh, you can figure out which point on the transformed mesh is topmost under the event position, and map that point back to the pre-transform mesh.
> 
> This would be difficult to implement unless you can run the vertex shader on the CPU (or you do some hairy CUDA/OpenCL implementation). However, there is another very good reason to be able to run the vertex shader outside the rendering pipeline: automatic calculation of filter bounds, so we can get rid of that horrible filter-margin stuff. Vincent says that the meshes used in the Adobe demos are usually not very large, so this may be feasible. (And automatically lowering the mesh resolution if necessary is also feasible.)
> 
> This may mean that we should choose a different, simpler language for vertex shaders than full WebGL vertex shaders.


I agree on both counts: CSS can not be expected to track meaningful transformation data from fragment shaders. It's a good idea to examine a simple subset of vertex shaders for accessible / exposure properties.

While we're looking at this stuff: it's darn-easy to prototype this with web workers and define the language subset in webidl.

Examining the use of js an postMessage will help to both define the interfaces needed for transforms and to explore the use cases and basic properties of vertex shaders that are intended for interactive use.


-Charles

Received on Thursday, 6 October 2011 04:46:30 UTC