fuzzy or weighted, but these options are disabled
until the number of the shaders increases.
The user only needs to add some words or a simple
phrase and ShaderBase will check which ones of
these words are indexed and will provide a result
with the shaders that have them in the indexing file.
This result will only show the shaders that could be
of the interest to the user. After searching and
downloading the shader into Processing the user
only needs to run the automatically generated sketch
holding this shader.
3.2 ShaderBase User Interface
The user interface in ShaderBase is divided in two
separate areas, Download and Upload, which can be
selected with the tabs located in the top left region of
the main window.
When the user selects a shader from the list of
available shaders, a preview image and a short
textual description will be displayed to help the user
deciding if that is the shader she wants. If the shader
is selected, ShaderBase will send it directly into
Processing’s editor, using all the information stored
in Git to build a new sketch that the user can run
immediately. If a sketch is already open, then
ShaderBase creates a new sketch with all the
required code and files. Again, all of these
operations take place transparently.
The tool provides a search function as explained
in Section 3.1. All the results are going to be
reflected in the list showing only the shaders
matching the search query. The upload process
requires that Processing sketch holds a valid shader.
Otherwise, ShaderBase will not allow uploading any
files to avoid the database being polluted with non-
shader code. When a user uploads a shader,
ShaderBase will ask to either share it with other
users, or to save it in the local repository. When the
latter option is selected, the shader is not sent to the
remote Git repository, and is only indexed for the
search in the local machine. In order to upload a
shader the user must fill the small template shown in
the section 3.1. The main purpose of the template is
to create an index file to ensure that the shader can
be found through the search queries.
Shaders can also be deleted from ShaderBase’s
interface; but this is allowed only if the shader is
saved in the local repository. The tool does not allow
deleting shaders indexed in ShaderDB. However the
user can modified those shaders, simply by
uploading them using the same name. ShaderBase
does not show the commit history of a shader stored
in ShaderDB, we considered this feature not
important for beginner users, while advanced users
will be able to access the commit history of shader
directly through GitHub.
4 CONCLUSIONS
Processing allows artists and designers working with
code to use GLSL shaders in a simpler way. It
makes the learning process more accessible to users
without formal training in CG, who can also benefit
from Processing’s portability and absence of extra
library configuration.
The availability of shaders provided by
ShaderBase in Processing should greatly enhance
the capabilities of the language, allowing for GPU-
accelerated rendering of complex models and
scenes. GLSL shaders already written for other
platforms and/or frameworks can be adapted to work
in Processing with minor code changes, thus helping
to share resources and knowledge between coding
communities. Furthermore ShaderBase will allow
sharing shader code and expertise over the web,
thanks to the widespread adoption of Processing as a
teaching and production tool in digital arts and
design. ShaderBase has recently released to the
community (Gómez, 2015a), with an initial selection
of shaders .(Gómez, 2015b)
From a technical standpoint, ShaderBase inherits
all the advantages of Git, which guarantees a robust
transfer and ensures that the information is not going
to be corrupted easily. Also, the tool does most all
the work in the local machine and thanks to the
search queries it allows users to find shaders very
quickly. All the shaders indexed in the machine can
be loaded directly into Processing’s editor. Sharing
new shader rendering effects does not involve any
extra work from the user.
Finally, ShaderBase provides access to shaders
created by a growing community of creative coders,
artists and designers. These shaders could be used
immediately from within Processing without any
previous setup or additional changes in the code. In
particular, this would enable users without previous
GLSL knowledge to start exploring the possibilities
offered by shader programming and Processing’s
shader API.
ACKNOWLEDGEMENTS
The authors would like to thank the contributions
over the years from all the members of the