OS4 DepotLogo by Liksmaskaren 
(anonymous IP:,1687) 

   Bug tracker
   Locale browser


   o Audio (332)
   o Datatype (50)
   o Demo (190)
   o Development (563)
   o Document (21)
   o Driver (96)
   o Emulation (143)
   o Game (920)
   o Graphics (480)
   o Library (105)
   o Network (219)
   o Office (60)
   o Utility (859)
   o Video (65)

Total files: 4103

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.19
Date: 30 Mar 2021
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: 11634
Comments: 4
Snapshots: 1
Videos: 1
Downloads: 48  (Current version)
451  (Accumulated)
Votes: 19 (0/0)  (30 days/7 days)

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

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.
- Load/Save/Create new project using RMB menu.
- Reload shader using RMB menu or 'r' key.
- Drop shader file (.frag) into the window.
- Drop project file (.sjp) 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.
- Save a screenshot using RMB menu or 's' 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

## Project files

Shaderjoy project files (.sjp) are text files that connect shaders and channel
inputs together. Project
file can be created by loading shader program(s) and textures and then saving
the project file.

If you end up modifying project files by hand, be careful: file parser is
case-sensitive and simple.

## 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 (sound shaders, audio playing, FFT...)
- Keyboard support
- Better Shadertoy compatibility

## Changes

- Add screenshot support.
- About: display RadeonHD/RX.chip version.
- Improve double-click toggling (reset timer on toggle).
- Use hard-coded alpha value of 1.0f.
- Refactor channel management internally.
- Treat project file location as a secondary path when looking for shaders.
- Work on audio support internally (not finished).
- Compiled with GCC 10 - thanks to all people working on the compiler!

- Add project file support (.sjp).
- Activate the most recently loaded tab.
- Blank mouse pointer completely in fullscreen mode.
- Reorganize RMB menus due to project file.
- Rename "Channels" menu to "Shaders and Channels".
- Rename "Shaders" menu to "Debug".
- Refactor code dealing with file handling.
- Reset frame counter on rewind.

- 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