Git Product home page Git Product logo

qml-glsl-coder's Introduction

QML GLSL Coder
v1.2.0

project URL:
https://github.com/neolit123/qml-glsl-coder

--------------------------------------------------------------------------------
INFORMATION

"QML GLSL Coder" is a live editor of GLSL fragment shaders based on Qt / QML.

the project is inspired by the following tools:
- ShaderToy (by IQ)
- Quint (by Andrew Baldwin)
- GLSL-Sandbox (by various contributors)

a couple of years ago i saw that easy, on-the-spot GLSL shader compilation was
possible with Qt / QML in the Quint project, but it had some issues and was
not very usable. in the meantime, i was playing with writing some effects in
the other listed tools which are WebGL based.

this project is not a port of Quint but rather a written from scratch, fully
functional editor that i started writing a while back.

public domain license - see the file LICENSE!

--------------------------------------------------------------------------------
SCREENSHOTS

https://tinyurl.com/ycl39h8p
https://tinyurl.com/y8d7rf6j
https://tinyurl.com/y9j9hlc8
https://tinyurl.com/y6vfpc42

--------------------------------------------------------------------------------
WHAT WORKS

only tested on Win32 desktop!
press F1 for the help screen and a list of keyboard shortcuts.

*) has a pretty usable text editor
- the editor is defined in qml/Editor.qml
- the editor can be toggled with F4
- everything that QML's TextEdit has, this editor has as well
- mouse wheel and page up/down support
- shows the current line and compilation errors
- has a syntax highlighter defined in cpp/highlighter.cpp/.h

*) loading/saving .glsl files
- F7/F8 open the file load/save dialogs

*) loading of a single image that can be used as a texture
- controlled with F6
- see shaders/greyscaleTexture.glsl for an example

*) dynamic quality and interpolation
- controlled with F9, F10, F11

*) toggleable FPS counter and mouse cursor
- controlled with F2, F3

*) fullscreen support
- controlled with F12

--------------------------------------------------------------------------------
WHAT DOESN'T WORK (THAT WELL)

here are some issues which are caused by Qt / QML bugs or missing features:

*) Qt 5.5 has some sort of a bug in QQuickShaderEffect that prevents on-the-spot
changes of the .fragmentShader property. this forced me to write a custom
QQuickItem named ShaderItem which is a stripped down QQuickShaderEffect
replacement.

*) auto-compile-on-edit actually works quite well on the ShaderItem side,
but the onTextChanged() signal from TextEdit is a bit sporadic.
therefore, i have disabled auto-compile-on-edit and you have to press F5 to
recompile. at some point this could become an option.

*) on Win32 the file open/save dialogs don't show in fullscreen unless the UI
is clicked. to solve the issue the file dialogs are opened in window-mode
and when closed, the original mode (e.g. fullscreen) is restored.

*) for some reason, when the application window is open it makes certain
tools on Win32 sluggish, while the CPU remains almost IDLE.

*) lines with bold text have more height than lines without bold text, which
breaks the estimation to fit exactly N lines of text in the editor visible
area and the last line may be cut. QML's TextEdit has no easy means to set
a fixed line height which is not very convenient.

--------------------------------------------------------------------------------
QMAKE VS CMAKE

cmake is more potent, while qmake is easier for a fast project setup. period.
this project is qmake based.

hopefully qmake will not be deprecated soon.

--------------------------------------------------------------------------------
DEPLOYMENT SIZE

40MB on Win32 is a bit too much but that's how Qt works.
if i wrote the same in SDL and some sort of a simplified widgets toolkit
it could have been in the lines of 10MB but it might have taken more time.

--------------------------------------------------------------------------------
BUILDING

install the latest Qt version
cd <path-where-the-coder-source-is>
qmake
make

--------------------------------------------------------------------------------
PRE-BUILD BINARIES

qml-glsl-coder-1.0.0-win32-qt5.5.0.zip:
https://tinyurl.com/y8h5c22h
qml-glsl-coder-1.2.0-win32-qt5.5.1.zip:
https://tinyurl.com/y9om8f6b

--------------------------------------------------------------------------------
EOF

qml-glsl-coder's People

Contributors

neolit123 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.