OS4 DepotLogo by invent 
(anonymous IP:,1663) 

   Bug tracker
   Locale browser


   o Audio (332)
   o Datatype (50)
   o Demo (188)
   o Development (562)
   o Document (21)
   o Driver (94)
   o Emulation (143)
   o Game (914)
   o Graphics (479)
   o Library (105)
   o Network (218)
   o Office (60)
   o Utility (858)
   o Video (65)

Total files: 4089

Full index file
Recent index file



Support the site

 Readme for:  Graphics » Viewer » shaderjoy.lha


Description: Display fragment shaders
Download: shaderjoy.lha       (TIPS: Use the right click menu if your browser takes you back here all the time)
Size: 4Mb
Version: 1.17
Date: 31 Oct 2020
Author: Juha Niemimaki
Submitter: Juha Niemimaki
Homepage: http://capehill.kapsi.fi
Requirements: OpenGL ES 2.0, Warp3D Nova
Category: graphics/viewer
Replaces: graphics/viewer/shaderjoy.lha
License: Freeware
Distribute: yes
Min OS Version: 4.1
FileID: 11458
Comments: 4
Snapshots: 1
Videos: 1
Downloads: 76  (Current version)
400  (Accumulated)
Votes: 19 (0/0)  (30 days/7 days)

Show comments Show snapshots Show videos Show content Show crashlogs Replace file 
# Shaderjoy 1.17

Shaderjoy allows you to display and create Shadertoy (https://www.shadertoy.com)
compatible fragment shaders. Fragment shaders (sometimes called pixel shaders)
are programs that are executed per fragment (pixel) on the GPU.

## Requirements

Ogles2.library 2.11.

Warp3D Nova 1.68.

## Usage

- Load/Save/Create new shader using RMB menu.
- Reload shader using RMB menu or 'r' key.
- Drop shader file (.frag) into the window.
- Load texture (or select buffer) channel using RMB menu.
- Add/Remove Common/Buffer A-D tabs.
- Select VSYNC method using RMB menu.
- Toggle fullscreen mode with LMB double-click, using RMB menu or 'f' key.
- Toggle FPS counter using RMB menu.
- Toggle verbose logging using RMB menu.
- Toggle special shader debug logging using RMB menu (requires ogles2.library
version 3).
- Toggle pause mode with SPACE key.

## Vertical sync method

- WaitTOF: interrupt-based (*)
- WaitBOVP: busyloop (*)
- Disabled: do not limit frame rate

*) as explained in the Graphics.library Autodoc.

## Supported uniform variables

- vec3 iResolution: the window size in pixels (xy).
- vec4 iMouse: x/y have the mouse coordinate if LMB is pressed, z/w have the
original mouse coordinate when "dragging" started.
- float iTime: second.microsecond.
- float iTimeDelta
- int iFrame: current frame number, starting from 0.
- float iFrameRate
- sampler2D iChannel0...3: texture.
- vec3 iChannelResolution[4]: texture width (x) and height (y).
- vec4 iDate: year (x), month (y), day (z) and seconds (w).

## Tooltypes

- VERBOSE: verbose logging.
- CHECKUNINITIALIZED: let ogles2.library find uninitialized variables in shader
- SHADERDEBUG: enable detailed shader debug log.
- VSYNC: enable vertical sync.
- SHOWFPS: display FPS counter in fullscreen mode.
- FULLSCREEN: start in fullscreen mode.
- EDITORVIEW: enable shader code editor in window mode.
- SCREENMODE: override system resolution in fullscreen mode.
- FONTNAME: editor font name.
- FONTSIZE: editor font size.
- EDITORNAME: external editor, for example NotePad.
- AUTORELOAD: monitor current shader source file and reload on change.
- WINDOWSIZE: window inner size.
- FLOATTEXTURE: FBOs use floating point texture, instead of unsigned byte.

## Multipass rendering

                                                |- iChannel0
                                                |- iChannel1
                    Common----> Buffer A/B/C/D -*- iChannel2
                       |                   |    |- iChannel3
                       |                   v
                       |     |- iChannel0 (buffer/texture)
                       v     |- iChannel1
      Window - Image shader -*- iChannel2
                             |- iChannel3

## Known issues

- Many Shadertoy shaders don't work properly:
  - Future driver update will improve situation.
  - Some shaders rely on undefined behaviour.
- Buffer A...D dynamic range is limited to 0...1.0, because floating point
textures are not used yet.
- Rendering order is from Buffer A to D (instead of the loading order).


- Audio support
- Keyboard support
- Better Shadertoy compatibility

## Changes

- Add FLOATTEXTURE tooltype. Note: there is an open driver issue #610.
- Fix mouse Y position (info bar height wasn't taken into account).
- Change iFrame uniform type from float to int.
- Load dropped shader file into Image slot when there is no editor view (tabs).
- Add sobel.frag.
- Refactor logging.

- Improve AppWindow feature: load file into currently active page.
- Improve Channel window by moving input selection above other gadgets.
- Disable texture file selection gadget when Buffer is chosen.
- Display message box when Buffer compilation fails.
- Compile all programs (Image + Buffers) when compile button is clicked.
- Sync shader code from GUI when compile button is clicked.
- Remove Buffer references in channels when some buffer tab is closed.
- Implement different logging levels. (Not used widely yet.)
- Improve debug logging, especially related to OpenGL resources.
- Fix a bug (of the year) that prevented Buffer channel configuration.
- Add one more rendering pass: render Image to an FBO.
- Use the latest rendered buffer instead of generating new frames in pause mode.
- Clear FBO textures on window resize.

- Add tab support (Common, Image and Buffers A, B, C, D).
- Allow editing of Common/Buffers A-D.
- Monitor changes of Common/Buffers A-D.
- Change Buffer logic: they are loaded outside the iChannel selection.
- Add Buffer selection to iChannel window: select either texture or Buffer A, B,
C or D.
- Fix path issue related to '/' handling.
- Flush stdout to make real-time log filtering possible.
- Rewrite rendering logic for improved frame buffer support.

- Add Common support. Common file is "included" before shader programs.
- Refactor GUI code.
- Display shader info log always when available. In case of errors and warnings
display also a requester.

- Make channel windows asynchronous and allow opening them simultaneously.
- Make load and save requesters asynchronous.
- On quit or fullscreen toggle, wait for save requester to finish. Otherwise try
to close extra windows.
- Do not advance iDate uniform in pause mode.
- Update shader name when filename is passed as a startup argument.
- Set GL viewport during startup.
- Add multipass rendering concept: allow loading of shader programs as
iChannels, and
allow loading of textures for those shader programs.

- Duplicate input / output streams when starting an external text editor.
- Add WINDOWSIZE tooltype.
- Add AUTORELOAD tooltype.
- Display shader name on info element.
- Display info element regardless of EDITORVIEW setting.
- Add channel window for setting up the textures.
- Clear mouse position when loading a new shader.

- Fix issue with texteditor.gadget creation (caused by missing OpenClass calls).
- Combine Play and Pause buttons.
- Display FPS and time info in a separate GUI element instead of window title
- Monitor shader source file and reload it on change.
- Add Control menu (Play/Pause, Rewind, Compile).
- Rename EDITOR tooltype to EDITORVIEW.

- Add tooltype EDITOR. When enabled, allow editing in window mode.
- Add tooltype FONTNAME and FONTSIZE, to configure editor font.
- Add tooltype EDITORNAME, to define external editor tool.
- Blank mouse pointer in fullscreen mode, when mouse is inactive.
- Allow pause mode toggling with SPACE key.
- Unpause when loading a shader.
- Update display also during pause mode, but on a slower rate.
- Re-enable reload functionality.

- Allow shader editing in window mode.
- Add play, pause, rewind and compile buttons in window mode.
- Allow saving of shaders.
- Remember window size when coming back from fullscreen mode.
- Add possibility to check uninitialized variables (requires ogles2.library
version 3).
- Add possibility to dump verbose Nova-level compilation logs (requires
ogles2.library version 3).
- Add tooltype SHADERDEBUG.
- Log shader info log always when available (in verbose mode).
- Time and log shader compilation (when in verbose mode).
- Remove possibility to reload shader.

- Use vertex buffer objects (VBOs).
- Add iTimeDelta and iFrameRate uniforms.
- Add AppWindow support: shaders can be dropped into the window.
- Shader filename can be passed as an argument.
- Improve About box: display GL information.
- Fix issue with blitting over window borders.
- Initialize fragment colour because some shaders do not.
- Reverse iMouse.y.

- Open all screens with SA_LikeWorkbench tag.
- Disable optimized bitmap allocation.
- Log OpenGL information during startup.
- Display version number on screen title bar.
- Fix an issue where FPS counter was not visible when started in fullscreen

- Improve VSYNC mechanism.
- Remove FPS counter flickering in fullscreen mode.
- Allow toggling of FPS counter.
- Add SHOWFPS tooltype.
- Add SCREENMODE tooltype.
- Disable Iconify menu option in fullscreen mode.
- Drop command-line argument support in favor of icon tooltypes.

- Fullscreen mode. Created using SA_LikeWorkbench so it's likely larger and
slower than default window mode!
- Improve logger: buffer is no more limited to 16 kilobytes.
- Change default texture path to "textures/shadertoy" for improve usage.
- User-selectable VSYNC mode (WaitTOF, WaitBOVP or disabled).
- Change default window size to 800 x 450.
- Display running time on window title bar.
- Display window size on window title bar.
- Use window pointer in ASL requesters.
- Add FULLSCREEN tooltype.

- Add icon tooltypes.

- Add iDate support.
- Add verbose logging.
- Fix: window pointer is now cleared when close gadget is used.
- Keep textures (iChannels) active when switching shaders.

- Fix: iChannelResolution is an array of vec3s.
- Workaround: use GL_LINEAR texture filtering to avoid diagonal line where
triangles meet.

- Add iChannel0...3 texture support. Each channel must be loaded manually at the
- Add iChannelResolution0...3 support.
- Add stack cookie and log stack usage at the exit.
- Display a message box in case shader or texture loading fails, instead of

- First version

Copyright © 2004-2021 by Björn Hagström All Rights Reserved