feat(shadertoy): add proper mouse/touch interaction support (#293)
* feat(shadertoy): add proper mouse/touch interaction support - Fix iMouse uniform to match official Shadertoy specification: - iMouse.xy only updates while button/touch is held down - iMouse.zw uses positive values when down, negative when released - Enables proper click detection via iMouse.z > 0 - Add touch event support for mobile devices: - touchstart/touchmove/touchend/touchcancel handlers - Same behavior as mouse events - Update tool description with mouse interaction documentation - Update README with: - Mouse & Touch Interaction feature - Improved Julia Set example with click detection - iMouse specification table and usage examples The iMouse uniform is a core Shadertoy feature used by popular shaders like Star Nest, raymarching examples, and particle systems. * style: fix Prettier formatting in shadertoy README
This commit is contained in:
parent
de8048cb6d
commit
6c5aa52c95
1 changed files with 115 additions and 26 deletions
|
|
@ -33,10 +33,24 @@ AVAILABLE UNIFORMS:
|
|||
- iTime (float): elapsed time in seconds
|
||||
- iTimeDelta (float): time since last frame
|
||||
- iFrame (int): frame counter
|
||||
- iMouse (vec4): mouse position (xy=current, zw=click)
|
||||
- iMouse (vec4): mouse/touch position in pixels (see MOUSE INTERACTION below)
|
||||
- iDate (vec4): year, month, day, seconds
|
||||
- iChannel0-3 (sampler2D): buffer inputs for multi-pass shaders
|
||||
|
||||
MOUSE INTERACTION:
|
||||
The iMouse uniform provides interactive mouse/touch input (works on mobile):
|
||||
- iMouse.xy: Current position while button/touch is held down (frozen on release)
|
||||
- iMouse.zw: Click start position (positive when down, negative when released)
|
||||
- iMouse.z > 0: Button is currently pressed
|
||||
- iMouse.z < 0: Button was released
|
||||
- iMouse.z == 0: Never clicked
|
||||
|
||||
Example - camera control:
|
||||
vec2 uv = iMouse.xy / iResolution.xy; // normalized 0-1
|
||||
|
||||
Example - detect click:
|
||||
if (iMouse.z > 0.0) { /* button is down */ }
|
||||
|
||||
MULTI-PASS RENDERING:
|
||||
- Use bufferA-D parameters for feedback effects, blur chains, simulations
|
||||
- BufferA output -> iChannel0, BufferB -> iChannel1, etc.
|
||||
|
|
|
|||
Loading…
Reference in a new issue