将 ShaderToy 上的着色器例子移植到 QML 中
2016-03-14 22:58
190 查看
将 ShaderToy 上的着色器例子移植到 QML 中
ShaderToy 是一个着色器学习网站,大牛在这个网站上分享他的GLSL,以及炫酷的示例。
如下代码,将
ShaderToy的一些思维进行了封装,需要考虑
GLSL ES接口。
#ifndef GL_ES #extension GL_EXT_shader_texture_lod : enable #extension GL_OES_standard_derivatives : enable precision highp float; precision highp int; precision mediump sampler2D; #endif #ifdef GL_ES precision mediump float; #endif uniform lowp float qt_Opacity; varying highp vec2 qt_TexCoord0; uniform vec3 iResolution ; uniform float iGlobalTime; uniform float iChannelTime[4]; uniform vec3 iChannelResolution[4]; uniform vec4 iMouse; uniform sampler2D iChannel0; uniform sampler2D iChannel1; uniform sampler2D iChannel2; uniform sampler2D iChannel3; uniform vec4 iDate; uniform float iSampleRate;
在
ShaderToy中一定会使用的
void mainImage( out vec4 fragColor, in vec2 fragCoord )。
void main(void) { mainImage(gl_FragColor, gl_FragCoord.xy); }
注意,
GLSL支持函数重载,但是
GLSL不支持隐式转换,所以参数传递时必须类型匹配。
最后看看项目 ShaderToy.qml,使用
ShaderEffect进行显卡渲染的例子吧。
参考:
【ShaderToy】开篇
shadertoy-iOS-v2
相关文章推荐
- THREE.JS入门教程(2)着色器-上
- THREE.JS入门教程(3)着色器-下
- prettify 代码高亮着色器google出品
- QML的import目录爬坑记录
- 基于PyQt5的快速开发框架QFramer
- OpenGL超级宝典笔记——GLSL语言基础
- GLSL学习笔记
- 基于QT4.8.3的手机操作系统,已完成QML语言的加入
- 反编译ARB program to GLSL shader日记
- BB10 Cascades介绍之Image和ImageTracker
- qml使用js-httprequest
- qml使用js-httprequest
- BB10 Cascades介绍之Image和ImageTracker
- 场景中多个点光源的着色器GLSL代码
- OpenGL2.0着色器的封装
- qml之Loader使用
- Qt5与QML(六)
- Qt5与QML(五)
- QT5与QML(三)
- qml someproblem