summaryrefslogtreecommitdiffstats
path: root/src/opengl
diff options
context:
space:
mode:
Diffstat (limited to 'src/opengl')
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp18
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache.cpp8
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache_p.h6
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp2
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h10
-rw-r--r--src/opengl/gl2paintengineex/qtriangulator_p.h10
-rw-r--r--src/opengl/qgl.cpp22
-rw-r--r--src/opengl/qgl.h6
-rw-r--r--src/opengl/qgl_p.h18
-rw-r--r--src/opengl/qgl_qpa.cpp20
-rw-r--r--src/opengl/qglbuffer.cpp4
-rw-r--r--src/opengl/qglextensions_p.h4
-rw-r--r--src/opengl/qglframebufferobject.cpp4
-rw-r--r--src/opengl/qglfunctions.cpp14
-rw-r--r--src/opengl/qglpixelbuffer.cpp4
-rw-r--r--src/opengl/qglshaderprogram.cpp7
-rw-r--r--src/opengl/util/README-GLSL18
-rw-r--r--src/opengl/util/brush_painter.glsl7
-rw-r--r--src/opengl/util/brushes.conf6
-rw-r--r--src/opengl/util/composition_mode_colorburn.glsl13
-rw-r--r--src/opengl/util/composition_mode_colordodge.glsl15
-rw-r--r--src/opengl/util/composition_mode_darken.glsl9
-rw-r--r--src/opengl/util/composition_mode_difference.glsl9
-rw-r--r--src/opengl/util/composition_mode_exclusion.glsl9
-rw-r--r--src/opengl/util/composition_mode_hardlight.glsl14
-rw-r--r--src/opengl/util/composition_mode_lighten.glsl9
-rw-r--r--src/opengl/util/composition_mode_multiply.glsl9
-rw-r--r--src/opengl/util/composition_mode_overlay.glsl13
-rw-r--r--src/opengl/util/composition_mode_screen.glsl6
-rw-r--r--src/opengl/util/composition_mode_softlight.glsl22
-rw-r--r--src/opengl/util/composition_modes.conf12
-rw-r--r--src/opengl/util/conical_brush.glsl27
-rw-r--r--src/opengl/util/ellipse_aa.glsl58
-rw-r--r--src/opengl/util/fast_painter.glsl19
-rw-r--r--src/opengl/util/fragmentprograms_p.h7287
-rw-r--r--src/opengl/util/generator.cpp500
-rw-r--r--src/opengl/util/generator.pro13
-rwxr-xr-xsrc/opengl/util/glsl_to_include.sh73
-rw-r--r--src/opengl/util/linear_brush.glsl22
-rw-r--r--src/opengl/util/masks.conf2
-rw-r--r--src/opengl/util/meego/main.cpp89
-rw-r--r--src/opengl/util/meego/shader-cache-introspector.pro7
-rw-r--r--src/opengl/util/painter.glsl21
-rw-r--r--src/opengl/util/painter_nomask.glsl9
-rw-r--r--src/opengl/util/pattern_brush.glsl23
-rw-r--r--src/opengl/util/radial_brush.glsl28
-rw-r--r--src/opengl/util/simple_porter_duff.glsl16
-rw-r--r--src/opengl/util/solid_brush.glsl4
-rw-r--r--src/opengl/util/texture_brush.glsl21
-rw-r--r--src/opengl/util/trap_exact_aa.glsl58
50 files changed, 79 insertions, 8526 deletions
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
index 05a612c311..aebdce6e01 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
@@ -44,7 +44,7 @@
#include "qpaintengineex_opengl2_p.h"
#include "qglshadercache_p.h"
-#include <QtGui/private/qguiglcontext_qpa_p.h>
+#include <QtGui/private/qopenglcontext_p.h>
#if defined(QT_DEBUG)
#include <QMetaEnum>
@@ -54,12 +54,12 @@
QT_BEGIN_NAMESPACE
-class QGLEngineSharedShadersResource : public QGLSharedResource
+class QGLEngineSharedShadersResource : public QOpenGLSharedResource
{
public:
- QGLEngineSharedShadersResource(QGuiGLContext *ctx)
- : QGLSharedResource(ctx->shareGroup())
- , m_shaders(new QGLEngineSharedShaders(QGLContext::fromGuiGLContext(ctx)))
+ QGLEngineSharedShadersResource(QOpenGLContext *ctx)
+ : QOpenGLSharedResource(ctx->shareGroup())
+ , m_shaders(new QGLEngineSharedShaders(QGLContext::fromOpenGLContext(ctx)))
{
}
@@ -74,7 +74,7 @@ public:
m_shaders = 0;
}
- void freeResource(QGuiGLContext *)
+ void freeResource(QOpenGLContext *)
{
}
@@ -88,16 +88,16 @@ class QGLShaderStorage
{
public:
QGLEngineSharedShaders *shadersForThread(const QGLContext *context) {
- QGLMultiGroupSharedResource *&shaders = m_storage.localData();
+ QOpenGLMultiGroupSharedResource *&shaders = m_storage.localData();
if (!shaders)
- shaders = new QGLMultiGroupSharedResource;
+ shaders = new QOpenGLMultiGroupSharedResource;
QGLEngineSharedShadersResource *resource =
shaders->value<QGLEngineSharedShadersResource>(context->contextHandle());
return resource ? resource->shaders() : 0;
}
private:
- QThreadStorage<QGLMultiGroupSharedResource *> m_storage;
+ QThreadStorage<QOpenGLMultiGroupSharedResource *> m_storage;
};
Q_GLOBAL_STATIC(QGLShaderStorage, qt_shader_storage);
diff --git a/src/opengl/gl2paintengineex/qglgradientcache.cpp b/src/opengl/gl2paintengineex/qglgradientcache.cpp
index bd408ffdc4..6ca09ba140 100644
--- a/src/opengl/gl2paintengineex/qglgradientcache.cpp
+++ b/src/opengl/gl2paintengineex/qglgradientcache.cpp
@@ -55,14 +55,14 @@ public:
}
private:
- QGLMultiGroupSharedResource m_resource;
+ QOpenGLMultiGroupSharedResource m_resource;
QMutex m_mutex;
};
Q_GLOBAL_STATIC(QGL2GradientCacheWrapper, qt_gradient_caches)
-QGL2GradientCache::QGL2GradientCache(QGuiGLContext *ctx)
- : QGLSharedResource(ctx->shareGroup())
+QGL2GradientCache::QGL2GradientCache(QOpenGLContext *ctx)
+ : QOpenGLSharedResource(ctx->shareGroup())
{
}
@@ -82,7 +82,7 @@ void QGL2GradientCache::invalidateResource()
cache.clear();
}
-void QGL2GradientCache::freeResource(QGuiGLContext *)
+void QGL2GradientCache::freeResource(QOpenGLContext *)
{
cleanCache();
}
diff --git a/src/opengl/gl2paintengineex/qglgradientcache_p.h b/src/opengl/gl2paintengineex/qglgradientcache_p.h
index 1b001c3405..600085a75f 100644
--- a/src/opengl/gl2paintengineex/qglgradientcache_p.h
+++ b/src/opengl/gl2paintengineex/qglgradientcache_p.h
@@ -58,7 +58,7 @@
QT_BEGIN_NAMESPACE
-class QGL2GradientCache : public QGLSharedResource
+class QGL2GradientCache : public QOpenGLSharedResource
{
struct CacheInfo
{
@@ -76,14 +76,14 @@ class QGL2GradientCache : public QGLSharedResource
public:
static QGL2GradientCache *cacheForContext(const QGLContext *context);
- QGL2GradientCache(QGuiGLContext *);
+ QGL2GradientCache(QOpenGLContext *);
~QGL2GradientCache();
GLuint getBuffer(const QGradient &gradient, qreal opacity);
inline int paletteSize() const { return 1024; }
void invalidateResource();
- void freeResource(QGuiGLContext *ctx);
+ void freeResource(QOpenGLContext *ctx);
private:
inline int maxCacheSize() const { return 60; }
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index 214bfa5b47..af6cb53a3a 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -59,7 +59,7 @@ QGLTextureGlyphCache::QGLTextureGlyphCache(QFontEngineGlyphCache::Type type, con
, m_serialNumber(qgltextureglyphcache_serial_number.fetchAndAddRelaxed(1))
{
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
- qDebug(" -> QGLTextureGlyphCache() %p for context %p.", this, QGuiGLContext::currentContext());
+ qDebug(" -> QGLTextureGlyphCache() %p for context %p.", this, QOpenGLContext::currentContext());
#endif
m_vertexCoordinateArray[0] = -1.0f;
m_vertexCoordinateArray[1] = -1.0f;
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index 2fcc551667..7b7da9d8e8 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -63,10 +63,10 @@ QT_BEGIN_NAMESPACE
class QGL2PaintEngineExPrivate;
-struct QGLGlyphTexture : public QGLSharedResource
+struct QGLGlyphTexture : public QOpenGLSharedResource
{
QGLGlyphTexture(const QGLContext *ctx)
- : QGLSharedResource(ctx->contextHandle()->shareGroup())
+ : QOpenGLSharedResource(ctx->contextHandle()->shareGroup())
, m_width(0)
, m_height(0)
{
@@ -78,9 +78,9 @@ struct QGLGlyphTexture : public QGLSharedResource
#endif
}
- void freeResource(QGuiGLContext *context)
+ void freeResource(QOpenGLContext *context)
{
- const QGLContext *ctx = QGLContext::fromGuiGLContext(context);
+ const QGLContext *ctx = QGLContext::fromOpenGLContext(context);
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
qDebug("~QGLGlyphTexture() %p for context %p.", this, ctx);
#endif
@@ -136,7 +136,7 @@ public:
inline void setPaintEnginePrivate(QGL2PaintEngineExPrivate *p) { pex = p; }
- inline const QGuiGLContextGroup *contextGroup() const { return m_textureResource ? m_textureResource->group() : 0; }
+ inline const QOpenGLContextGroup *contextGroup() const { return m_textureResource ? m_textureResource->group() : 0; }
inline int serialNumber() const { return m_serialNumber; }
diff --git a/src/opengl/gl2paintengineex/qtriangulator_p.h b/src/opengl/gl2paintengineex/qtriangulator_p.h
index 04a219c255..a8e7553770 100644
--- a/src/opengl/gl2paintengineex/qtriangulator_p.h
+++ b/src/opengl/gl2paintengineex/qtriangulator_p.h
@@ -58,7 +58,7 @@
QT_BEGIN_NAMESPACE
-class Q_OPENGL_EXPORT QVertexIndexVector
+class QVertexIndexVector
{
public:
enum Type {
@@ -111,7 +111,7 @@ private:
QVector<quint16> indices16;
};
-struct Q_OPENGL_EXPORT QTriangleSet
+struct QTriangleSet
{
inline QTriangleSet() { }
inline QTriangleSet(const QTriangleSet &other) : vertices(other.vertices), indices(other.indices) { }
@@ -122,7 +122,7 @@ struct Q_OPENGL_EXPORT QTriangleSet
QVertexIndexVector indices; // [i[0], j[0], k[0], i[1], j[1], k[1], i[2], ...]
};
-struct Q_OPENGL_EXPORT QPolylineSet
+struct QPolylineSet
{
inline QPolylineSet() { }
inline QPolylineSet(const QPolylineSet &other) : vertices(other.vertices), indices(other.indices) { }
@@ -139,9 +139,9 @@ struct Q_OPENGL_EXPORT QPolylineSet
// 'lod' is the level of detail. Default is 1. Curves are split into more lines when 'lod' is higher.
QTriangleSet qTriangulate(const qreal *polygon, int count, uint hint = QVectorPath::PolygonHint | QVectorPath::OddEvenFill, const QTransform &matrix = QTransform());
QTriangleSet qTriangulate(const QVectorPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
-QTriangleSet Q_OPENGL_EXPORT qTriangulate(const QPainterPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
+QTriangleSet qTriangulate(const QPainterPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
QPolylineSet qPolyline(const QVectorPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
-QPolylineSet Q_OPENGL_EXPORT qPolyline(const QPainterPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
+QPolylineSet qPolyline(const QPainterPath &path, const QTransform &matrix = QTransform(), qreal lod = 1);
QT_END_NAMESPACE
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index f51882841b..a78c602701 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -55,7 +55,7 @@
#include "gl2paintengineex/qpaintengineex_opengl2_p.h"
-#include <QtGui/QPlatformGLContext>
+#include <QtGui/QPlatformOpenGLContext>
#include <qglpixelbuffer.h>
#include <qglframebufferobject.h>
@@ -1501,11 +1501,15 @@ const QGLContext *qt_gl_transfer_context(const QGLContext *ctx)
QGLContextPrivate::QGLContextPrivate(QGLContext *context)
: internal_context(false)
, q_ptr(context)
+ , texture_destroyer(0)
, functions(0)
{
group = new QGLContextGroup(context);
- texture_destroyer = new QGLTextureDestroyer;
- texture_destroyer->moveToThread(qApp->thread());
+
+ if (qApp) {
+ texture_destroyer = new QGLTextureDestroyer;
+ texture_destroyer->moveToThread(qApp->thread());
+ }
}
QGLContextPrivate::~QGLContextPrivate()
@@ -1605,7 +1609,7 @@ static void convertFromGLImage(QImage &img, int w, int h, bool alpha_format, boo
img = img.mirrored();
}
-Q_OPENGL_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha)
+QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha)
{
QImage img(size, (alpha_format && include_alpha) ? QImage::Format_ARGB32_Premultiplied
: QImage::Format_RGB32);
@@ -3076,8 +3080,8 @@ void QGLContext::setInitialized(bool on)
const QGLContext* QGLContext::currentContext()
{
- if (const QGuiGLContext *threadContext = QGuiGLContext::currentContext()) {
- return QGLContext::fromGuiGLContext(const_cast<QGuiGLContext *>(threadContext));
+ if (const QOpenGLContext *threadContext = QOpenGLContext::currentContext()) {
+ return QGLContext::fromOpenGLContext(const_cast<QOpenGLContext *>(threadContext));
}
return 0;
}
@@ -4664,7 +4668,7 @@ void QGLWidget::drawTexture(const QPointF &point, GLuint textureId, GLenum textu
Q_GLOBAL_STATIC(QGLEngineThreadStorage<QGL2PaintEngineEx>, qt_gl_2_engine)
-Q_OPENGL_EXPORT QPaintEngine* qt_qgl_paint_engine()
+QPaintEngine* qt_qgl_paint_engine()
{
return qt_gl_2_engine()->engine();
}
@@ -4934,12 +4938,12 @@ void QGLWidgetPrivate::initContext(QGLContext *context, const QGLWidget* shareWi
Q_GLOBAL_STATIC(QString, qt_gl_lib_name)
-Q_OPENGL_EXPORT void qt_set_gl_library_name(const QString& name)
+void qt_set_gl_library_name(const QString& name)
{
qt_gl_lib_name()->operator=(name);
}
-Q_OPENGL_EXPORT const QString qt_gl_library_name()
+const QString qt_gl_library_name()
{
if (qt_gl_lib_name()->isNull()) {
# if defined(QT_OPENGL_ES_2)
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index a12cddcca4..665dcac412 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -338,8 +338,8 @@ public:
static const QGLContext* currentContext();
- static QGLContext *fromGuiGLContext(QGuiGLContext *platformContext);
- QGuiGLContext *contextHandle() const;
+ static QGLContext *fromOpenGLContext(QOpenGLContext *platformContext);
+ QOpenGLContext *contextHandle() const;
protected:
virtual bool chooseContext(const QGLContext* shareContext = 0);
@@ -359,7 +359,7 @@ protected:
static QGLContext* currentCtx;
private:
- QGLContext(QGuiGLContext *windowContext);
+ QGLContext(QOpenGLContext *windowContext);
QScopedPointer<QGLContextPrivate> d_ptr;
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 58efc7f7fd..6f418a9818 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -61,11 +61,11 @@
#include "QtCore/qhash.h"
#include "QtCore/qatomic.h"
#include "QtWidgets/private/qwidget_p.h"
-#include "QtGui/private/qguiglcontext_qpa_p.h"
+#include "QtGui/private/qopenglcontext_p.h"
#include "qcache.h"
#include "qglpaintdevice_p.h"
-#include <QtGui/QGuiGLContext>
+#include <QtGui/QOpenGLContext>
QT_BEGIN_NAMESPACE
@@ -209,7 +209,7 @@ private:
// Get the context that resources for "ctx" will transfer to once
// "ctx" is destroyed. Returns null if nothing is sharing with ctx.
-Q_OPENGL_EXPORT const QGLContext *qt_gl_transfer_context(const QGLContext *);
+const QGLContext *qt_gl_transfer_context(const QGLContext *);
// GL extension definitions
class QGLExtensions {
@@ -298,7 +298,7 @@ public:
void syncGlState(); // Makes sure the GL context's state is what we think it is
void swapRegion(const QRegion &region);
- QGuiGLContext *guiGlContext;
+ QOpenGLContext *guiGlContext;
void setupSharing();
QGLFormat glFormat;
@@ -528,18 +528,18 @@ QGLTexture* QGLTextureCache::getTexture(QGLContext *ctx, qint64 key)
return m_cache.object(cacheKey);
}
-extern Q_OPENGL_EXPORT QPaintEngine* qt_qgl_paint_engine();
+extern QPaintEngine* qt_qgl_paint_engine();
// Put a guard around a GL object identifier and its context.
// When the context goes away, a shared context will be used
// in its place. If there are no more shared contexts, then
// the identifier is returned as zero - it is assumed that the
// context destruction cleaned up the identifier in this case.
-class Q_OPENGL_EXPORT QGLSharedResourceGuardBase : public QGLSharedResource
+class QGLSharedResourceGuardBase : public QOpenGLSharedResource
{
public:
QGLSharedResourceGuardBase(QGLContext *context, GLuint id)
- : QGLSharedResource(context->contextHandle()->shareGroup())
+ : QOpenGLSharedResource(context->contextHandle()->shareGroup())
, m_id(id)
{
}
@@ -555,10 +555,10 @@ protected:
m_id = 0;
}
- void freeResource(QGuiGLContext *context)
+ void freeResource(QOpenGLContext *context)
{
if (m_id) {
- freeResource(QGLContext::fromGuiGLContext(context), m_id);
+ freeResource(QGLContext::fromOpenGLContext(context), m_id);
}
}
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp
index e6c135bb7f..46dfd54adf 100644
--- a/src/opengl/qgl_qpa.cpp
+++ b/src/opengl/qgl_qpa.cpp
@@ -45,7 +45,7 @@
#include <QDebug>
#include <private/qapplication_p.h>
-#include <QtGui/QPlatformGLContext>
+#include <QtGui/QPlatformOpenGLContext>
#include <QtGui/QPlatformWindow>
#include <QtGui/QSurfaceFormat>
@@ -110,9 +110,9 @@ QSurfaceFormat QGLFormat::toSurfaceFormat(const QGLFormat &format)
void QGLContextPrivate::setupSharing() {
Q_Q(QGLContext);
- QGuiGLContext *sharedContext = guiGlContext->shareContext();
+ QOpenGLContext *sharedContext = guiGlContext->shareContext();
if (sharedContext) {
- QGLContext *actualSharedContext = QGLContext::fromGuiGLContext(sharedContext);
+ QGLContext *actualSharedContext = QGLContext::fromOpenGLContext(sharedContext);
sharing = true;
QGLContextGroup::addShare(q, actualSharedContext);
}
@@ -149,8 +149,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext)
}
delete d->guiGlContext;
- QGuiGLContext *shareGlContext = shareContext ? shareContext->d_func()->guiGlContext : 0;
- d->guiGlContext = new QGuiGLContext;
+ QOpenGLContext *shareGlContext = shareContext ? shareContext->d_func()->guiGlContext : 0;
+ d->guiGlContext = new QOpenGLContext;
d->guiGlContext->setFormat(winFormat);
d->guiGlContext->setShareContext(shareGlContext);
d->valid = d->guiGlContext->create();
@@ -286,7 +286,7 @@ class QGLTemporaryContextPrivate
{
public:
QWindow *window;
- QGuiGLContext *context;
+ QOpenGLContext *context;
QGLContext *oldContext;
};
@@ -301,7 +301,7 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *)
d->window->setGeometry(QRect(0, 0, 3, 3));
d->window->create();
- d->context = new QGuiGLContext;
+ d->context = new QOpenGLContext;
d->context->create();
d->context->makeCurrent(d->window);
}
@@ -378,7 +378,7 @@ void QGLWidget::setColormap(const QGLColormap & c)
Q_UNUSED(c);
}
-QGLContext::QGLContext(QGuiGLContext *context)
+QGLContext::QGLContext(QOpenGLContext *context)
: d_ptr(new QGLContextPrivate(this))
{
Q_D(QGLContext);
@@ -389,7 +389,7 @@ QGLContext::QGLContext(QGuiGLContext *context)
d->setupSharing();
}
-QGuiGLContext *QGLContext::contextHandle() const
+QOpenGLContext *QGLContext::contextHandle() const
{
Q_D(const QGLContext);
return d->guiGlContext;
@@ -398,7 +398,7 @@ QGuiGLContext *QGLContext::contextHandle() const
/*!
Returns a OpenGL context for the window context specified by \a windowContext
*/
-QGLContext *QGLContext::fromGuiGLContext(QGuiGLContext *context)
+QGLContext *QGLContext::fromOpenGLContext(QOpenGLContext *context)
{
if (!context)
return 0;
diff --git a/src/opengl/qglbuffer.cpp b/src/opengl/qglbuffer.cpp
index 53f27392b0..c1128a0ebd 100644
--- a/src/opengl/qglbuffer.cpp
+++ b/src/opengl/qglbuffer.cpp
@@ -334,7 +334,7 @@ bool QGLBuffer::read(int offset, void *data, int count)
{
#if !defined(QT_OPENGL_ES)
Q_D(QGLBuffer);
- if (!glGetBufferSubData || !d->guard.id())
+ if (!glGetBufferSubData || !d->guard->id())
return false;
while (glGetError() != GL_NO_ERROR) ; // Clear error state.
glGetBufferSubData(d->type, offset, count, data);
@@ -421,7 +421,7 @@ bool QGLBuffer::bind()
Q_D(const QGLBuffer);
GLuint bufferId = d->guard ? d->guard->id() : 0;
if (bufferId) {
- if (d->guard->group() != QGuiGLContextGroup::currentContextGroup()) {
+ if (d->guard->group() != QOpenGLContextGroup::currentContextGroup()) {
#ifndef QT_NO_DEBUG
qWarning("QGLBuffer::bind: buffer is not valid in the current context");
#endif
diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h
index 2ef8a0169c..991fbba8c7 100644
--- a/src/opengl/qglextensions_p.h
+++ b/src/opengl/qglextensions_p.h
@@ -855,10 +855,10 @@ struct QGLExtensionFuncs
#endif
extern bool qt_resolve_framebufferobject_extensions(QGLContext *ctx);
-bool Q_OPENGL_EXPORT qt_resolve_buffer_extensions(QGLContext *ctx);
+bool qt_resolve_buffer_extensions(QGLContext *ctx);
bool qt_resolve_version_1_3_functions(QGLContext *ctx);
-bool Q_OPENGL_EXPORT qt_resolve_version_2_0_functions(QGLContext *ctx);
+bool qt_resolve_version_2_0_functions(QGLContext *ctx);
bool qt_resolve_stencil_face_extension(QGLContext *ctx);
bool qt_resolve_frag_program_extensions(QGLContext *ctx);
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 29168441b3..e3f12e42c8 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -45,7 +45,7 @@
#include <qdebug.h>
#include <private/qgl_p.h>
#include <private/qfont_p.h>
-#include <private/qpaintengineex_opengl2_p.h>
+#include <gl2paintengineex/qpaintengineex_opengl2_p.h>
#include <qglframebufferobject.h>
#include <qlibrary.h>
@@ -53,7 +53,7 @@
QT_BEGIN_NAMESPACE
-extern Q_OPENGL_EXPORT QImage qt_gl_read_framebuffer(const QSize&, bool, bool);
+extern QImage qt_gl_read_framebuffer(const QSize&, bool, bool);
#define QGL_FUNC_CONTEXT const QGLContext *ctx = QGLContext::currentContext();
#define QGL_FUNCP_CONTEXT const QGLContext *ctx = QGLContext::currentContext();
diff --git a/src/opengl/qglfunctions.cpp b/src/opengl/qglfunctions.cpp
index 534c6c8bbf..227e6cc176 100644
--- a/src/opengl/qglfunctions.cpp
+++ b/src/opengl/qglfunctions.cpp
@@ -41,7 +41,7 @@
#include "qglfunctions.h"
#include "qgl_p.h"
-#include "QtGui/private/qguiglcontext_qpa_p.h"
+#include "QtGui/private/qopenglcontext_p.h"
QT_BEGIN_NAMESPACE
@@ -140,11 +140,11 @@ QT_BEGIN_NAMESPACE
*/
// Hidden private fields for additional extension data.
-struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate, public QGLSharedResource
+struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate, public QOpenGLSharedResource
{
- QGLFunctionsPrivateEx(QGuiGLContext *context)
- : QGLFunctionsPrivate(QGLContext::fromGuiGLContext(context))
- , QGLSharedResource(context->shareGroup())
+ QGLFunctionsPrivateEx(QOpenGLContext *context)
+ : QGLFunctionsPrivate(QGLContext::fromOpenGLContext(context))
+ , QOpenGLSharedResource(context->shareGroup())
, m_features(-1) {}
void invalidateResource()
@@ -152,7 +152,7 @@ struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate, public QGLSharedResou
m_features = -1;
}
- void freeResource(QGuiGLContext *)
+ void freeResource(QOpenGLContext *)
{
// no gl resources to free
}
@@ -160,7 +160,7 @@ struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate, public QGLSharedResou
int m_features;
};
-Q_GLOBAL_STATIC(QGLMultiGroupSharedResource, qt_gl_functions_resource)
+Q_GLOBAL_STATIC(QOpenGLMultiGroupSharedResource, qt_gl_functions_resource)
static QGLFunctionsPrivateEx *qt_gl_functions(const QGLContext *context = 0)
{
diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp
index 156c40f394..ee4e9547ca 100644
--- a/src/opengl/qglpixelbuffer.cpp
+++ b/src/opengl/qglpixelbuffer.cpp
@@ -91,7 +91,7 @@
#include <QtCore/qglobal.h>
-#include <private/qpaintengineex_opengl2_p.h>
+#include <gl2paintengineex/qpaintengineex_opengl2_p.h>
#include <qglpixelbuffer.h>
#include <private/qglpixelbuffer_p.h>
@@ -100,7 +100,7 @@
QT_BEGIN_NAMESPACE
-extern Q_OPENGL_EXPORT QImage qt_gl_read_framebuffer(const QSize&, bool, bool);
+extern QImage qt_gl_read_framebuffer(const QSize&, bool, bool);
QGLContext* QGLPBufferGLPaintDevice::context() const
diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp
index 7b3f5d998d..0163d60f0c 100644
--- a/src/opengl/qglshaderprogram.cpp
+++ b/src/opengl/qglshaderprogram.cpp
@@ -958,7 +958,7 @@ bool QGLShaderProgram::bind()
if (!d->linked && !link())
return false;
#ifndef QT_NO_DEBUG
- if (d->programGuard->group() != QGuiGLContextGroup::currentContextGroup()) {
+ if (d->programGuard->group() != QOpenGLContextGroup::currentContextGroup()) {
qWarning("QGLShaderProgram::bind: program is not valid in the current context.");
return false;
}
@@ -980,7 +980,7 @@ void QGLShaderProgram::release()
{
#ifndef QT_NO_DEBUG
Q_D(QGLShaderProgram);
- if (d->programGuard->group() != QGuiGLContextGroup::currentContextGroup())
+ if (d->programGuard->group() != QOpenGLContextGroup::currentContextGroup())
qWarning("QGLShaderProgram::release: program is not valid in the current context.");
#endif
#if defined(QT_OPENGL_ES_2)
@@ -991,9 +991,6 @@ void QGLShaderProgram::release()
#endif
}
-#undef ctx
-#define ctx d->programGuard.context()
-
/*!
Returns the OpenGL identifier associated with this shader program.
diff --git a/src/opengl/util/README-GLSL b/src/opengl/util/README-GLSL
deleted file mode 100644
index ff20eb45b2..0000000000
--- a/src/opengl/util/README-GLSL
+++ /dev/null
@@ -1,18 +0,0 @@
-Use of GLSL for vertex and fragment programs in Qt
----------------------------------------------------
-
-We don't compile the *.glsl files because we don't want the build process of
-Qt to require cgc from nVidia to build the fragment programs.
-
-The script src/opengl/util/glsl_to_include.sh will compile a GLSL program to a file
-that can be included in a C(++) program. The file is the output from cgc
-quoted as a string.
-
-This can be done manually by:
-
-./glsl_to_include.sh radial.glsl
-./glsl_to_include.sh conical.glsl
-
-This will produce the files radial.frag and radial.glsl_quoted.
-(and also conical.frag and conical.glsl_quoted)
-These files are included by qpaintengine_opengl.cpp
diff --git a/src/opengl/util/brush_painter.glsl b/src/opengl/util/brush_painter.glsl
deleted file mode 100644
index 6c4acdf924..0000000000
--- a/src/opengl/util/brush_painter.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-// fast brush painter for composition modes which can be implemented with blendfuncs
-// no mask, used for fast filling of aliased primitives (or multisampled)
-
-void main()
-{
- gl_FragColor = brush();
-}
diff --git a/src/opengl/util/brushes.conf b/src/opengl/util/brushes.conf
deleted file mode 100644
index 93e2b3b295..0000000000
--- a/src/opengl/util/brushes.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-FRAGMENT_PROGRAM_BRUSH_SOLID solid_brush.glsl
-FRAGMENT_PROGRAM_BRUSH_RADIAL radial_brush.glsl
-FRAGMENT_PROGRAM_BRUSH_CONICAL conical_brush.glsl
-FRAGMENT_PROGRAM_BRUSH_LINEAR linear_brush.glsl
-FRAGMENT_PROGRAM_BRUSH_TEXTURE texture_brush.glsl
-FRAGMENT_PROGRAM_BRUSH_PATTERN pattern_brush.glsl
diff --git a/src/opengl/util/composition_mode_colorburn.glsl b/src/opengl/util/composition_mode_colorburn.glsl
deleted file mode 100644
index c913b9737f..0000000000
--- a/src/opengl/util/composition_mode_colorburn.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Dca' = Sca.Da + Dca.Sa <= Sa.Da ?
-// Sca.(1 - Da) + Dca.(1 - Sa)
-// Sa.(Sca.Da + Dca.Sa - Sa.Da)/Sca + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = mix(src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- src.a * (src.rgb * dst.a + dst.rgb * src.a - src.a * dst.a) / max(src.rgb, 0.00001) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- step(src.a * dst.a, src.rgb * dst.a + dst.rgb * src.a));
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_colordodge.glsl b/src/opengl/util/composition_mode_colordodge.glsl
deleted file mode 100644
index b75e83cf4e..0000000000
--- a/src/opengl/util/composition_mode_colordodge.glsl
+++ /dev/null
@@ -1,15 +0,0 @@
-// Dca' = Sca.Da + Dca.Sa <= Sa.Da ?
-// Dca.Sa/(1 - Sca/Sa) + Sca.(1 - Da) + Dca.(1 - Sa) :
-// Sa.Da + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- vec3 temp = src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.rgb = mix(dst.rgb * src.a / max(1.0 - src.rgb / max(src.a, 0.000001), 0.000001) + temp,
- src.a * dst.a + temp,
- step(src.a * dst.a, src.rgb * dst.a + dst.rgb * src.a));
-
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_darken.glsl b/src/opengl/util/composition_mode_darken.glsl
deleted file mode 100644
index 8bbb82b3ce..0000000000
--- a/src/opengl/util/composition_mode_darken.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Dca' = min(Sca.Da, Dca.Sa) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = min(src.rgb * dst.a, dst.rgb * src.a) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_difference.glsl b/src/opengl/util/composition_mode_difference.glsl
deleted file mode 100644
index 3c46ec71f2..0000000000
--- a/src/opengl/util/composition_mode_difference.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Dca' = Sca + Dca - 2.min(Sca.Da, Dca.Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = src.rgb + dst.rgb - 2.0 * min(src.rgb * dst.a, dst.rgb * src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_exclusion.glsl b/src/opengl/util/composition_mode_exclusion.glsl
deleted file mode 100644
index 59c2da99ea..0000000000
--- a/src/opengl/util/composition_mode_exclusion.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Dca' = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = (src.rgb * dst.a + dst.rgb * src.a - 2.0 * src.rgb * dst.rgb) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_hardlight.glsl b/src/opengl/util/composition_mode_hardlight.glsl
deleted file mode 100644
index 4ea355029d..0000000000
--- a/src/opengl/util/composition_mode_hardlight.glsl
+++ /dev/null
@@ -1,14 +0,0 @@
-// Dca' = 2.Sca < Sa ?
-// 2.Sca.Dca + Sca.(1 - Da) + Dca.(1 - Sa) :
-// Sa.Da - 2.(Da - Dca).(Sa - Sca) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = mix(2.0 * src.rgb * dst.rgb + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- src.a * dst.a - 2.0 * (dst.a - dst.rgb) * (src.a - src.rgb) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- step(src.a, 2.0 * src.rgb));
- result.a = src.a + dst.a - src.a * dst.a;
-
- return result;
-}
diff --git a/src/opengl/util/composition_mode_lighten.glsl b/src/opengl/util/composition_mode_lighten.glsl
deleted file mode 100644
index 13ef507a4c..0000000000
--- a/src/opengl/util/composition_mode_lighten.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Dca' = max(Sca.Da, Dca.Sa) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = max(src.rgb * dst.a, dst.rgb * src.a) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_multiply.glsl b/src/opengl/util/composition_mode_multiply.glsl
deleted file mode 100644
index f90b7f00ad..0000000000
--- a/src/opengl/util/composition_mode_multiply.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Dca' = Sca.Dca + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = src.rgb * dst.rgb + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_overlay.glsl b/src/opengl/util/composition_mode_overlay.glsl
deleted file mode 100644
index f621bdee96..0000000000
--- a/src/opengl/util/composition_mode_overlay.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Dca' = 2.Dca < Da ?
-// 2.Sca.Dca + Sca.(1 - Da) + Dca.(1 - Sa)
-// Sa.Da - 2.(Da - Dca).(Sa - Sca) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- result.rgb = mix(2.0 * src.rgb * dst.rgb + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- src.a * dst.a - 2.0 * (dst.a - dst.rgb) * (src.a - src.rgb) + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a),
- step(dst.a, 2.0 * dst.rgb));
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_mode_screen.glsl b/src/opengl/util/composition_mode_screen.glsl
deleted file mode 100644
index 8f4f010032..0000000000
--- a/src/opengl/util/composition_mode_screen.glsl
+++ /dev/null
@@ -1,6 +0,0 @@
-// Dca' = Sca + Dca - Sca.Dca
-// Da' = Sa + Da - Sa.Da
-vec4 composite(vec4 src, vec4 dst)
-{
- return src + dst - src * dst;
-}
diff --git a/src/opengl/util/composition_mode_softlight.glsl b/src/opengl/util/composition_mode_softlight.glsl
deleted file mode 100644
index e4c1f89156..0000000000
--- a/src/opengl/util/composition_mode_softlight.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-// if 2.Sca <= Sa
-// Dca' = Dca.(Sa + (2.Sca - Sa).(1 - Dca/Da)) + Sca.(1 - Da) + Dca.(1 - Sa)
-// otherwise if 2.Sca > Sa and 4.Dca <= Da
-// Dca' = Dca.Sa + Da.(2.Sca - Sa).(4.Dca/Da.(4.Dca/Da + 1).(Dca/Da - 1) + 7.Dca/Da) + Sca.(1 - Da) + Dca.(1 - Sa)
-// otherwise if 2.Sca > Sa and 4.Dca > Da
-// Dca' = Dca.Sa + Da.(2.Sca - Sa).((Dca/Da)^0.5 - Dca/Da) + Sca.(1 - Da) + Dca.(1 - Sa)
-// Da' = Sa + Da - Sa.Da
-
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
- float da = max(dst.a, 0.00001);
- vec3 dst_np = dst.rgb / da;
- result.rgb = mix(dst.rgb * (src.a + (2.0 * src.rgb - src.a) * (1.0 - dst_np)),
- mix(dst.rgb * src.a + dst.a * (2.0 * src.rgb - src.a) * ((16.0 * dst_np - 12.0) * dst_np + 3.0) * dst_np,
- dst.rgb * src.a + dst.a * (2.0 * src.rgb - src.a) * (sqrt(dst_np) - dst_np),
- step(dst.a, 4.0 * dst.rgb)),
- step(src.a, 2.0 * src.rgb))
- + src.rgb * (1.0 - dst.a) + dst.rgb * (1.0 - src.a);
- result.a = src.a + dst.a - src.a * dst.a;
- return result;
-}
diff --git a/src/opengl/util/composition_modes.conf b/src/opengl/util/composition_modes.conf
deleted file mode 100644
index df52830b99..0000000000
--- a/src/opengl/util/composition_modes.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-COMPOSITION_MODES_SIMPLE_PORTER_DUFF simple_porter_duff.glsl
-COMPOSITION_MODES_MULTIPLY composition_mode_multiply.glsl
-COMPOSITION_MODES_SCREEN composition_mode_screen.glsl
-COMPOSITION_MODES_OVERLAY composition_mode_overlay.glsl
-COMPOSITION_MODES_DARKEN composition_mode_darken.glsl
-COMPOSITION_MODES_LIGHTEN composition_mode_lighten.glsl
-COMPOSITION_MODES_COLORDODGE composition_mode_colordodge.glsl
-COMPOSITION_MODES_COLORBURN composition_mode_colorburn.glsl
-COMPOSITION_MODES_HARDLIGHT composition_mode_hardlight.glsl
-COMPOSITION_MODES_SOFTLIGHT composition_mode_softlight.glsl
-COMPOSITION_MODES_DIFFERENCE composition_mode_difference.glsl
-COMPOSITION_MODES_EXCLUSION composition_mode_exclusion.glsl
diff --git a/src/opengl/util/conical_brush.glsl b/src/opengl/util/conical_brush.glsl
deleted file mode 100644
index b3ec1d7efe..0000000000
--- a/src/opengl/util/conical_brush.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-// conical gradient shader
-#define M_PI 3.14159265358979323846
-uniform sampler1D palette;
-uniform float angle;
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-vec4 brush()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1);
- vec2 A = hcoords.xy / hcoords.z;
-
-/* float val = fmod((atan2(-A.y, A.x) + angle) / (2.0 * M_PI), 1); */
- if (abs(A.y) == abs(A.x))
- A.y += 0.002;
- float t = (atan(-A.y, A.x) + angle) / (2.0 * M_PI);
- float val = t - floor(t);
- return texture1D(palette, val);
-}
-
diff --git a/src/opengl/util/ellipse_aa.glsl b/src/opengl/util/ellipse_aa.glsl
deleted file mode 100644
index 257e3bbd47..0000000000
--- a/src/opengl/util/ellipse_aa.glsl
+++ /dev/null
@@ -1,58 +0,0 @@
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-uniform vec2 ellipse_offset;
-
-// ellipse equation
-
-// s^2/a^2 + t^2/b^2 = 1
-//
-// implicit equation:
-// g(s,t) = 1 - s^2/r_s^2 - t^2/r_t^2
-
-// distance from ellipse:
-// grad = [dg/dx dg/dy]
-// d(s, t) ~= g(s, t) / |grad|
-
-// dg/dx = dg/ds * ds/dx + dg/dt * dt/dx
-// dg/dy = dg/ds * ds/dy + dg/dt * dt/dy
-
-float ellipse_aa()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy + ellipse_offset, 1);
- float inv_w = 1.0 / hcoords.z;
- vec2 st = hcoords.xy * inv_w;
-
- vec4 xy = vec4(mat[0].xy, mat[1].xy);
- vec2 h = vec2(mat[0].z, mat[1].z);
-
- vec4 dstdxy = (xy.xzyw - h.xyxy * st.xxyy) * inv_w;
-
- //dstdxy.x = (mat[0].x - mat[0].z * st.x) * inv_w; // ds/dx
- //dstdxy.y = (mat[1].x - mat[1].z * st.x) * inv_w; // ds/dy
- //dstdxy.z = (mat[0].y - mat[0].z * st.y) * inv_w; // dt/dx
- //dstdxy.w = (mat[1].y - mat[1].z * st.y) * inv_w; // dt/dy
-
- vec2 inv_r = gl_TexCoord[0].xy;
- vec2 n = st * inv_r;
- float g = 1.0 - dot(n, n);
-
- vec2 dgdst = -2.0 * n * inv_r;
-
- vec2 grad = vec2(dot(dgdst, dstdxy.xz),
- dot(dgdst, dstdxy.yw));
-
- return smoothstep(-0.5, 0.5, g * inversesqrt(dot(grad, grad)));
-}
-
-void main()
-{
- gl_FragColor = ellipse_aa().xxxx;
-}
diff --git a/src/opengl/util/fast_painter.glsl b/src/opengl/util/fast_painter.glsl
deleted file mode 100644
index 63f5e5f3be..0000000000
--- a/src/opengl/util/fast_painter.glsl
+++ /dev/null
@@ -1,19 +0,0 @@
-// fast painter for composition modes which can be implemented with blendfuncs
-
-uniform sampler2D mask_texture;
-uniform vec2 inv_mask_size;
-uniform vec2 mask_offset;
-uniform vec4 mask_channel;
-
-float mask()
-{
- return dot(mask_channel, texture2D(mask_texture, (gl_FragCoord.xy + mask_offset) * inv_mask_size));
-}
-
-void main()
-{
- // combine clip and coverage channels
- float mask_alpha = mask();
-
- gl_FragColor = brush() * mask_alpha;
-}
diff --git a/src/opengl/util/fragmentprograms_p.h b/src/opengl/util/fragmentprograms_p.h
deleted file mode 100644
index b1a47e3d5f..0000000000
--- a/src/opengl/util/fragmentprograms_p.h
+++ /dev/null
@@ -1,7287 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtOpenGL module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef FRAGMENTPROGRAMS_P_H
-#define FRAGMENTPROGRAMS_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-enum FragmentVariable {
- VAR_BRUSH_TEXTURE,
- VAR_LINEAR,
- VAR_INV_MATRIX_M1,
- VAR_INV_MASK_SIZE,
- VAR_INV_MATRIX_M2,
- VAR_PORTERDUFF_AB,
- VAR_MASK_CHANNEL,
- VAR_ELLIPSE_OFFSET,
- VAR_PORTERDUFF_XYZ,
- VAR_INV_DST_SIZE,
- VAR_MASK_TEXTURE,
- VAR_DST_TEXTURE,
- VAR_PALETTE,
- VAR_MASK_OFFSET,
- VAR_INV_BRUSH_TEXTURE_SIZE,
- VAR_FMP2_M_RADIUS2,
- VAR_FMP,
- VAR_INV_MATRIX_M0,
- VAR_ANGLE
-};
-
-enum FragmentBrushType {
- FRAGMENT_PROGRAM_BRUSH_SOLID,
- FRAGMENT_PROGRAM_BRUSH_RADIAL,
- FRAGMENT_PROGRAM_BRUSH_CONICAL,
- FRAGMENT_PROGRAM_BRUSH_LINEAR,
- FRAGMENT_PROGRAM_BRUSH_TEXTURE,
- FRAGMENT_PROGRAM_BRUSH_PATTERN
-};
-
-enum FragmentCompositionModeType {
- COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- COMPOSITION_MODES_MULTIPLY,
- COMPOSITION_MODES_SCREEN,
- COMPOSITION_MODES_OVERLAY,
- COMPOSITION_MODES_DARKEN,
- COMPOSITION_MODES_LIGHTEN,
- COMPOSITION_MODES_COLORDODGE,
- COMPOSITION_MODES_COLORBURN,
- COMPOSITION_MODES_HARDLIGHT,
- COMPOSITION_MODES_SOFTLIGHT,
- COMPOSITION_MODES_DIFFERENCE,
- COMPOSITION_MODES_EXCLUSION,
- COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- COMPOSITION_MODES_MULTIPLY_NOMASK,
- COMPOSITION_MODES_SCREEN_NOMASK,
- COMPOSITION_MODES_OVERLAY_NOMASK,
- COMPOSITION_MODES_DARKEN_NOMASK,
- COMPOSITION_MODES_LIGHTEN_NOMASK,
- COMPOSITION_MODES_COLORDODGE_NOMASK,
- COMPOSITION_MODES_COLORBURN_NOMASK,
- COMPOSITION_MODES_HARDLIGHT_NOMASK,
- COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- COMPOSITION_MODES_DIFFERENCE_NOMASK,
- COMPOSITION_MODES_EXCLUSION_NOMASK,
- COMPOSITION_MODE_BLEND_MODE_MASK,
- COMPOSITION_MODE_BLEND_MODE_NOMASK
-};
-
-enum FragmentMaskType {
- FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA,
- FRAGMENT_PROGRAM_MASK_ELLIPSE_AA
-};
-
-static const unsigned int num_fragment_variables = 19;
-
-static const unsigned int num_fragment_brushes = 6;
-static const unsigned int num_fragment_composition_modes = 26;
-static const unsigned int num_fragment_masks = 2;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA =
- "!!ARBfp1.0\n"
- "PARAM c[1] = { { 0.5, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "ADD R3.z, fragment.position.x, c[0].x;\n"
- "ADD R0.y, fragment.position, -c[0].x;\n"
- "MAX R4.x, fragment.texcoord[0].y, R0.y;\n"
- "ADD R0.x, fragment.position.y, c[0];\n"
- "MIN R3.w, R0.x, fragment.texcoord[0].x;\n"
- "ADD R2.z, fragment.position.x, -c[0].x;\n"
- "MOV R2.w, R3.z;\n"
- "MOV R0.yw, R4.x;\n"
- "MOV R0.xz, R3.w;\n"
- "MAD R0, fragment.texcoord[1].xxzz, R0, fragment.texcoord[1].yyww;\n"
- "MAD R0.zw, fragment.position.x, c[0].y, -R0;\n"
- "MOV R2.x, R0;\n"
- "MOV R2.y, R0.z;\n"
- "MOV R1.w, R0;\n"
- "MOV R1.z, R0.y;\n"
- "MIN R1.xy, R2, R1.zwzw;\n"
- "SGE R0.xy, R1.zwzw, R2;\n"
- "ADD R0.zw, -fragment.texcoord[0], -fragment.texcoord[0];\n"
- "MAD R3.xy, R0, R0.zwzw, fragment.texcoord[0].zwzw;\n"
- "ADD R0, -R1.xxyy, R2.zwzw;\n"
- "MAD R0, R0, R3.xxyy, R4.x;\n"
- "ADD R3.xy, R0.ywzw, R0.xzzw;\n"
- "ADD R4.zw, R3.w, -R0.xyxz;\n"
- "ADD R0.zw, -R4.x, R0.xyyw;\n"
- "ADD R0.xy, R3.z, -R1;\n"
- "MAX R1.zw, R2.xyxy, R1;\n"
- "MUL R0.xy, R0, R0.zwzw;\n"
- "MAD R3.xy, -R3, c[0].x, R3.w;\n"
- "ADD R2.w, R3.z, -R2.z;\n"
- "MUL R2.xy, R3, R2.w;\n"
- "ADD R2.w, R3, -R4.x;\n"
- "ADD R3.xy, -R2.z, R1.zwzw;\n"
- "MUL R3.xy, R4.zwzw, R3;\n"
- "ADD R4.zw, R1.xyxy, R1;\n"
- "MAD R0.zw, R4, c[0].x, -R2.z;\n"
- "MAD R0.xy, -R0, c[0].x, R2.w;\n"
- "MAD R4.zw, R0, R2.w, -R0.xyxy;\n"
- "SGE R0.zw, R3.z, R1;\n"
- "MAD R0.xy, R0.zwzw, R4.zwzw, R0;\n"
- "MAD R3.xy, R3, c[0].x, -R2;\n"
- "MAD R0.zw, R0, R3.xyxy, R2.xyxy;\n"
- "ADD R2.xy, R0.zwzw, -R0;\n"
- "SGE R0.zw, R2.z, R1.xyxy;\n"
- "MAD R0.xy, R0.zwzw, R2, R0;\n"
- "SGE R0.zw, R1, R2.z;\n"
- "ADD R0.xy, R0, -R2.w;\n"
- "SGE R1.xy, R3.z, R1;\n"
- "MAD R0.xy, R1, R0, R2.w;\n"
- "MAD R0.x, -R0, R0.z, R2.w;\n"
- "SGE R0.z, R3.w, R4.x;\n"
- "MAD R0.x, -R0.y, R0.w, R0;\n"
- "MUL result.color, R0.x, R0.z;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_MASK_ELLIPSE_AA =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..3],\n"
- " { -2, 1, -0.5, 2 },\n"
- " { 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "ADD R0.xy, fragment.position, c[3];\n"
- "MUL R1.xyz, R0.y, c[1];\n"
- "MAD R0.xyz, R0.x, c[0], R1;\n"
- "ADD R0.xyz, R0, c[2];\n"
- "RCP R2.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R2.z;\n"
- "MUL R2.xy, R0.zwzw, fragment.texcoord[0];\n"
- "MOV R1.xy, c[0];\n"
- "MOV R1.zw, c[1].xyxy;\n"
- "MOV R0.x, c[0].z;\n"
- "MOV R0.y, c[1].z;\n"
- "MAD R0, R0.zzww, -R0.xyxy, R1.xzyw;\n"
- "MUL R1.xy, R2, fragment.texcoord[0];\n"
- "MUL R0, R2.z, R0;\n"
- "MUL R1.xy, R1, c[4].x;\n"
- "MUL R1.zw, R1.xyxy, R0.xyxz;\n"
- "MUL R0.zw, R1.xyxy, R0.xyyw;\n"
- "ADD R0.y, R0.z, R0.w;\n"
- "ADD R0.x, R1.z, R1.w;\n"
- "MUL R0.xy, R0, R0;\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, R2.xyxy, R2.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "ADD R0.y, -R0.z, c[4];\n"
- "RSQ R0.x, R0.x;\n"
- "MAD_SAT R0.x, R0, R0.y, -c[4].z;\n"
- "MUL R0.y, -R0.x, c[4].w;\n"
- "ADD R0.y, R0, c[5].x;\n"
- "MUL R0.x, R0, R0;\n"
- "MUL result.color, R0.x, R0.y;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[3];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xyz, R0, c[0].y;\n"
- "MUL R2.xyz, fragment.color.primary.w, R1;\n"
- "MUL R1.xyz, fragment.color.primary, c[0].x;\n"
- "MAD R2.xyz, R0.w, R1, R2;\n"
- "ADD R3.xy, fragment.position, c[4];\n"
- "ADD R1.w, -R0, c[6].x;\n"
- "MUL R1.xyz, fragment.color.primary, c[1].y;\n"
- "MAD R2.xyz, R1.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[1].z;\n"
- "ADD R2.w, -fragment.color.primary, c[6].x;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.z, R0.w, R2.w;\n"
- "MUL R1.x, fragment.color.primary.w, R0.w;\n"
- "MUL R1.y, fragment.color.primary.w, R1.w;\n"
- "DP3 R2.w, R1, c[1];\n"
- "MUL R3.xy, R3, c[2];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[5];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R0.w, c[4];\n"
- "MUL R1.xyz, fragment.color.primary, R1.x;\n"
- "MAD R1.xyz, fragment.color.primary, R0, R1;\n"
- "ADD R1.w, -fragment.color.primary, c[4].x;\n"
- "MAD R2.xyz, R0, R1.w, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[4] = { program.local[0..3] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "ADD R2, fragment.color.primary, R0;\n"
- "MUL R1.xy, R1, c[0];\n"
- "MAD R2, -fragment.color.primary, R0, R2;\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R1, R0, texture[0], 2D;\n"
- "ADD R0.w, -R1, c[4].y;\n"
- "MUL R3.xyz, fragment.color.primary, R0.w;\n"
- "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n"
- "ADD R0.xyz, R1.w, -R1;\n"
- "MUL R0.xyz, R0, R2;\n"
- "MUL R0.xyz, R0, c[4].x;\n"
- "MAD R0.xyz, fragment.color.primary.w, R1.w, -R0;\n"
- "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n"
- "MUL R2.xyz, fragment.color.primary, R1;\n"
- "MAD R2.xyz, R2, c[4].x, R3;\n"
- "ADD R0.w, -fragment.color.primary, c[4].y;\n"
- "MAD R3.xyz, R1, R0.w, R0;\n"
- "MAD R2.xyz, R1, R0.w, R2;\n"
- "MUL R0.xyz, R1, c[4].x;\n"
- "SGE R0.xyz, R0, R1.w;\n"
- "ADD R3.xyz, R3, -R2;\n"
- "MAD R2.xyz, R0, R3, R2;\n"
- "ADD R0.z, fragment.color.primary.w, R1.w;\n"
- "MAD R2.w, -fragment.color.primary, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[2];\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[3];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.xyz, fragment.color.primary, R0.w;\n"
- "MIN R1.xyz, R1, R2;\n"
- "ADD R1.w, -R0, c[4].x;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, -fragment.color.primary, c[4].x;\n"
- "MAD R2.xyz, R0, R1.w, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.xyz, fragment.color.primary, R0.w;\n"
- "MAX R1.xyz, R1, R2;\n"
- "ADD R1.w, -R0, c[4].x;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, -fragment.color.primary, c[4].x;\n"
- "MAD R2.xyz, R0, R1.w, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -fragment.color.primary.w, c[4];\n"
- "MAX R1.y, fragment.color.primary.w, c[4];\n"
- "MUL R2.xyz, R0, R1.x;\n"
- "ADD R1.w, -R0, c[4].x;\n"
- "MAD R3.xyz, fragment.color.primary, R1.w, R2;\n"
- "RCP R1.y, R1.y;\n"
- "MAD R1.xyz, -fragment.color.primary, R1.y, c[4].x;\n"
- "MAX R1.xyz, R1, c[4].y;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.w, fragment.color.primary, R0;\n"
- "RCP R1.x, R1.x;\n"
- "RCP R1.y, R1.y;\n"
- "RCP R1.z, R1.z;\n"
- "MAD R1.xyz, R2, R1, R3;\n"
- "MAD R3.xyz, fragment.color.primary.w, R0.w, R3;\n"
- "MAD R2.xyz, fragment.color.primary, R0.w, R2;\n"
- "ADD R3.xyz, R3, -R1;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R3, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.w, -R0, c[4].x;\n"
- "MUL R1.xyz, fragment.color.primary.w, R0;\n"
- "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n"
- "MAD R1.xyz, -fragment.color.primary.w, R0.w, R2;\n"
- "MUL R3.xyz, fragment.color.primary.w, R1;\n"
- "MAX R1.xyz, fragment.color.primary, c[4].y;\n"
- "ADD R2.w, -fragment.color.primary, c[4].x;\n"
- "MUL R4.xyz, fragment.color.primary, R1.w;\n"
- "RCP R1.x, R1.x;\n"
- "RCP R1.y, R1.y;\n"
- "RCP R1.z, R1.z;\n"
- "MAD R3.xyz, R3, R1, R4;\n"
- "MUL R1.xyz, R0, R2.w;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "MAD R3.xyz, R0, R2.w, R3;\n"
- "MUL R1.w, fragment.color.primary, R0;\n"
- "ADD R3.xyz, R3, -R1;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R3, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R1, R0, texture[0], 2D;\n"
- "ADD R0.w, -R1, c[4].y;\n"
- "MUL R3.xyz, fragment.color.primary, R0.w;\n"
- "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n"
- "ADD R0.xyz, R1.w, -R1;\n"
- "MUL R0.xyz, R0, R2;\n"
- "MUL R0.xyz, R0, c[4].x;\n"
- "MAD R0.xyz, fragment.color.primary.w, R1.w, -R0;\n"
- "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n"
- "MUL R2.xyz, fragment.color.primary, R1;\n"
- "MAD R2.xyz, R2, c[4].x, R3;\n"
- "ADD R0.w, -fragment.color.primary, c[4].y;\n"
- "MAD R3.xyz, R1, R0.w, R0;\n"
- "MAD R2.xyz, R1, R0.w, R2;\n"
- "MUL R0.xyz, fragment.color.primary, c[4].x;\n"
- "SGE R0.xyz, R0, fragment.color.primary.w;\n"
- "ADD R3.xyz, R3, -R2;\n"
- "MAD R2.xyz, R0, R3, R2;\n"
- "ADD R0.z, fragment.color.primary.w, R1.w;\n"
- "MAD R2.w, -fragment.color.primary, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[2];\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[3];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..3],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MAX R1.x, R0.w, c[4].z;\n"
- "RCP R1.x, R1.x;\n"
- "MUL R2.xyz, R0, R1.x;\n"
- "MAD R1.xyz, R2, c[5].x, -c[5].y;\n"
- "MAD R3.xyz, R2, R1, c[5].z;\n"
- "MAD R1.xyz, fragment.color.primary, c[4].y, -fragment.color.primary.w;\n"
- "MUL R4.xyz, R0.w, R1;\n"
- "MUL R5.xyz, R4, R3;\n"
- "RSQ R1.w, R2.x;\n"
- "RSQ R2.w, R2.z;\n"
- "RCP R3.x, R1.w;\n"
- "RSQ R1.w, R2.y;\n"
- "MUL R5.xyz, R2, R5;\n"
- "RCP R3.z, R2.w;\n"
- "RCP R3.y, R1.w;\n"
- "ADD R3.xyz, -R2, R3;\n"
- "MUL R3.xyz, R4, R3;\n"
- "ADD R2.xyz, -R2, c[4].x;\n"
- "MAD R1.xyz, R1, R2, fragment.color.primary.w;\n"
- "MUL R2.xyz, fragment.color.primary, c[4].y;\n"
- "MAD R4.xyz, fragment.color.primary.w, R0, R5;\n"
- "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
- "ADD R5.xyz, R3, -R4;\n"
- "MUL R3.xyz, R0, c[4].w;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R3.xyz, R3, R5, R4;\n"
- "MAD R3.xyz, -R0, R1, R3;\n"
- "MUL R1.xyz, R0, R1;\n"
- "SGE R2.xyz, R2, fragment.color.primary.w;\n"
- "MAD R2.xyz, R2, R3, R1;\n"
- "ADD R1.x, -R0.w, c[4];\n"
- "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n"
- "ADD R1.x, -fragment.color.primary.w, c[4];\n"
- "MAD R2.xyz, R0, R1.x, R2;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.xyz, fragment.color.primary, R0;\n"
- "MUL R3.xyz, fragment.color.primary.w, R0;\n"
- "MUL R2.xyz, fragment.color.primary, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "MAD R2.xyz, -R2, c[4].x, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[1];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xyz, fragment.color.primary.w, R0;\n"
- "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n"
- "MUL R1.xyz, fragment.color.primary, R0;\n"
- "MAD R1.xyz, -R1, c[4].x, R2;\n"
- "ADD R1.w, -R0, c[4].y;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, -fragment.color.primary, c[4].y;\n"
- "MAD R2.xyz, R0, R1.w, R1;\n"
- "ADD R1.z, fragment.color.primary.w, R0.w;\n"
- "MAD R2.w, -fragment.color.primary, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[2];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[3];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[4] = { program.local[0..2],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[2];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xyz, R0, c[0].y;\n"
- "MUL R2.xyz, fragment.color.primary.w, R1;\n"
- "MUL R1.xyz, fragment.color.primary, c[0].x;\n"
- "MAD R2.xyz, R0.w, R1, R2;\n"
- "MUL R0.xyz, R0, c[1].z;\n"
- "ADD R1.w, -R0, c[3].x;\n"
- "MUL R1.xyz, fragment.color.primary, c[1].y;\n"
- "MAD R1.xyz, R1.w, R1, R2;\n"
- "ADD R2.x, -fragment.color.primary.w, c[3];\n"
- "MAD result.color.xyz, R2.x, R0, R1;\n"
- "MUL R0.x, fragment.color.primary.w, R0.w;\n"
- "MUL R0.z, R0.w, R2.x;\n"
- "MUL R0.y, fragment.color.primary.w, R1.w;\n"
- "DP3 result.color.w, R0, c[1];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R0.w, c[1];\n"
- "MUL R1.xyz, fragment.color.primary, R1.x;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "MAD R1.xyz, fragment.color.primary, R0, R1;\n"
- "ADD R2.x, -fragment.color.primary.w, c[1];\n"
- "MAD result.color.xyz, R0, R2.x, R1;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[1] = { program.local[0] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1, fragment.color.primary, R0;\n"
- "MAD result.color, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.w, -R0, c[1].y;\n"
- "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n"
- "ADD R1.xyz, R0.w, -R0;\n"
- "MUL R1.xyz, R1, R2;\n"
- "MUL R1.xyz, R1, c[1].x;\n"
- "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n"
- "MUL R3.xyz, fragment.color.primary, R1.w;\n"
- "MUL R2.xyz, fragment.color.primary, R0;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, -fragment.color.primary, c[1].y;\n"
- "MAD R2.xyz, R2, c[1].x, R3;\n"
- "MAD R2.xyz, R0, R1.w, R2;\n"
- "MAD R1.xyz, R0, R1.w, R1;\n"
- "MUL R0.xyz, R0, c[1].x;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "ADD R1.xyz, R1, -R2;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R1, R2;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.xyz, fragment.color.primary, R0.w;\n"
- "MIN R1.xyz, R1, R2;\n"
- "ADD R1.w, -R0, c[1].x;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "ADD R2.x, -fragment.color.primary.w, c[1];\n"
- "MAD result.color.xyz, R0, R2.x, R1;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.xyz, fragment.color.primary, R0.w;\n"
- "MAX R1.xyz, R1, R2;\n"
- "ADD R1.w, -R0, c[1].x;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "ADD R2.x, -fragment.color.primary.w, c[1];\n"
- "MAD result.color.xyz, R0, R2.x, R1;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MAX R1.y, fragment.color.primary.w, c[1];\n"
- "RCP R2.x, R1.y;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -fragment.color.primary.w, c[1];\n"
- "MUL R1.xyz, R0, R1.x;\n"
- "ADD R1.w, -R0, c[1].x;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "MAD R2.xyz, -fragment.color.primary, R2.x, c[1].x;\n"
- "MAX R2.xyz, R2, c[1].y;\n"
- "MUL R0.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.w, fragment.color.primary, R0;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R0, R2, R1;\n"
- "MAD R1.xyz, fragment.color.primary.w, R0.w, R1;\n"
- "MAD R0.xyz, fragment.color.primary, R0.w, R0;\n"
- "SGE R0.xyz, R0, R1.w;\n"
- "ADD R1.xyz, R1, -R2;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "MAD result.color.xyz, R0, R1, R2;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xyz, fragment.color.primary.w, R0;\n"
- "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n"
- "MAD R1.xyz, -fragment.color.primary.w, R0.w, R2;\n"
- "MUL R3.xyz, fragment.color.primary.w, R1;\n"
- "MAX R1.xyz, fragment.color.primary, c[1].y;\n"
- "ADD R1.w, -R0, c[1].x;\n"
- "MUL R4.xyz, fragment.color.primary, R1.w;\n"
- "ADD R2.w, -fragment.color.primary, c[1].x;\n"
- "RCP R1.x, R1.x;\n"
- "RCP R1.y, R1.y;\n"
- "RCP R1.z, R1.z;\n"
- "MAD R1.xyz, R3, R1, R4;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "MAD R0.xyz, R0, R2.w, R1;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R3;\n"
- "MUL R1.w, fragment.color.primary, R0;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "ADD R0.xyz, R0, -R1;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "MAD result.color.xyz, R2, R0, R1;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.w, -R0, c[1].y;\n"
- "ADD R2.xyz, fragment.color.primary.w, -fragment.color.primary;\n"
- "ADD R1.xyz, R0.w, -R0;\n"
- "MUL R1.xyz, R1, R2;\n"
- "MUL R1.xyz, R1, c[1].x;\n"
- "MAD R1.xyz, fragment.color.primary.w, R0.w, -R1;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "MUL R3.xyz, fragment.color.primary, R1.w;\n"
- "MUL R2.xyz, fragment.color.primary, R0;\n"
- "ADD R1.w, -fragment.color.primary, c[1].y;\n"
- "MAD R2.xyz, R2, c[1].x, R3;\n"
- "MAD R2.xyz, R0, R1.w, R2;\n"
- "MAD R0.xyz, R0, R1.w, R1;\n"
- "ADD R1.xyz, R0, -R2;\n"
- "MUL R0.xyz, fragment.color.primary, c[1].x;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "SGE R0.xyz, R0, fragment.color.primary.w;\n"
- "MAD result.color.xyz, R0, R1, R2;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[3] = { program.local[0],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MAX R1.x, R0.w, c[1].z;\n"
- "RCP R1.x, R1.x;\n"
- "MUL R2.xyz, R0, R1.x;\n"
- "MAD R1.xyz, R2, c[2].x, -c[2].y;\n"
- "MAD R3.xyz, R2, R1, c[2].z;\n"
- "MAD R1.xyz, fragment.color.primary, c[1].y, -fragment.color.primary.w;\n"
- "MUL R4.xyz, R0.w, R1;\n"
- "MUL R5.xyz, R4, R3;\n"
- "RSQ R1.w, R2.x;\n"
- "RCP R3.x, R1.w;\n"
- "RSQ R2.w, R2.z;\n"
- "RSQ R1.w, R2.y;\n"
- "MUL R5.xyz, R2, R5;\n"
- "RCP R3.z, R2.w;\n"
- "RCP R3.y, R1.w;\n"
- "ADD R3.xyz, -R2, R3;\n"
- "MUL R3.xyz, R4, R3;\n"
- "ADD R2.xyz, -R2, c[1].x;\n"
- "MAD R1.xyz, R1, R2, fragment.color.primary.w;\n"
- "MUL R2.xyz, fragment.color.primary, c[1].y;\n"
- "MAD R4.xyz, fragment.color.primary.w, R0, R5;\n"
- "MAD R3.xyz, fragment.color.primary.w, R0, R3;\n"
- "ADD R5.xyz, R3, -R4;\n"
- "MUL R3.xyz, R0, c[1].w;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R3.xyz, R3, R5, R4;\n"
- "MAD R3.xyz, -R0, R1, R3;\n"
- "MUL R1.xyz, R0, R1;\n"
- "SGE R2.xyz, R2, fragment.color.primary.w;\n"
- "MAD R2.xyz, R2, R3, R1;\n"
- "ADD R1.x, -R0.w, c[1];\n"
- "MAD R2.xyz, fragment.color.primary, R1.x, R2;\n"
- "ADD R1.x, fragment.color.primary.w, R0.w;\n"
- "ADD R1.y, -fragment.color.primary.w, c[1].x;\n"
- "MAD result.color.xyz, R0, R1.y, R2;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R2.xyz, fragment.color.primary.w, R0;\n"
- "MUL R1.xyz, fragment.color.primary, R0.w;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "MIN R1.xyz, R1, R2;\n"
- "ADD R0.xyz, fragment.color.primary, R0;\n"
- "MAD result.color.xyz, -R1, c[1].x, R0;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[2] = { program.local[0],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xy, fragment.position, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xyz, fragment.color.primary.w, R0;\n"
- "MAD R2.xyz, fragment.color.primary, R0.w, R1;\n"
- "MUL R1.xyz, fragment.color.primary, R0;\n"
- "MAD R1.xyz, -R1, c[1].x, R2;\n"
- "ADD R1.w, -R0, c[1].y;\n"
- "MAD R1.xyz, fragment.color.primary, R1.w, R1;\n"
- "ADD R1.w, fragment.color.primary, R0;\n"
- "ADD R2.x, -fragment.color.primary.w, c[1].y;\n"
- "MAD result.color.xyz, R0, R2.x, R1;\n"
- "MAD result.color.w, -fragment.color.primary, R0, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[3] = { program.local[0..2] };\n"
- "TEMP R0;\n"
- "ADD R0.xy, fragment.position, c[1];\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "DP4 R0.x, R0, c[2];\n"
- "MUL result.color, fragment.color.primary, R0.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "MOV result.color, fragment.color.primary;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[12] = { program.local[0..10],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[11].x;\n"
- "MUL R0.z, R0, c[11].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.x, R0.x;\n"
- "RCP R0.z, R0.x;\n"
- "ADD R1.x, -R0.y, R0.z;\n"
- "MOV R0.x, c[11];\n"
- "MUL R0.z, R0.x, c[1].x;\n"
- "RCP R1.y, R0.z;\n"
- "MUL R0.xy, fragment.position, c[8];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.x, R1, R1.y;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R0, c[5].y;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[5].x;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R3.xy, fragment.position, c[9];\n"
- "ADD R2.w, -R0, c[11].z;\n"
- "MUL R1.xyz, R1, c[6].y;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[6].z;\n"
- "ADD R3.z, -R1.w, c[11];\n"
- "MAD R2.xyz, R3.z, R1, R2;\n"
- "MUL R1.y, R1.w, R2.w;\n"
- "MUL R1.x, R1.w, R0.w;\n"
- "MUL R1.z, R0.w, R3;\n"
- "DP3 R2.w, R1, c[6];\n"
- "MUL R3.xy, R3, c[7];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[10];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.x, R0.x;\n"
- "RCP R0.z, R0.x;\n"
- "ADD R1.x, -R0.y, R0.z;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.z, R0.x, c[1].x;\n"
- "RCP R1.y, R0.z;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.x, R1, R1.y;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.x, -R0.w, c[9].z;\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, -R1.w, c[9].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[7];\n"
- "MUL R1.xy, R1, c[5];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "ADD R3.xy, fragment.position, c[7];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.z, R0.x, R0;\n"
- "TEX R1, R0.z, texture[2], 1D;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2, R1, R0;\n"
- "MAD R2, -R1, R0, R2;\n"
- "MUL R3.xy, R3, c[5];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R1.xy, fragment.position, c[6];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[9].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, -R0.w, c[9].z;\n"
- "MAD R3.xyz, R3, c[9].x, R4;\n"
- "MAD R3.xyz, R1, R2.x, R3;\n"
- "MAD R0.xyz, R1, R2.x, R0;\n"
- "MUL R2.xyz, R1, c[9].x;\n"
- "ADD R0.xyz, R0, -R3;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R0, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[7];\n"
- "MUL R0.xy, R0, c[5];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[8];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.z, -R0.y, R0;\n"
- "RCP R0.w, R0.x;\n"
- "MUL R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[9].z;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[9].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[7];\n"
- "MUL R1.xy, R1, c[5];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.z, -R0.y, R0;\n"
- "RCP R0.w, R0.x;\n"
- "MUL R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[9].z;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[9].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[7];\n"
- "MUL R1.xy, R1, c[5];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAX R1.x, R0.w, c[9].w;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R1.xyz, -R0, R1.x, c[9].z;\n"
- "MAX R2.xyz, R1, c[9].w;\n"
- "MUL R1.xy, fragment.position, c[6];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[9].z;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "MAD R4.xyz, R0, R2.w, R3;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R0.xyz, R0, R1.w, R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R3, R2, R4;\n"
- "MAD R4.xyz, R0.w, R1.w, R4;\n"
- "ADD R4.xyz, R4, -R2;\n"
- "MAD R2.xyz, R0, R4, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[7];\n"
- "MUL R0.xy, R0, c[5];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[8];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[9].w;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[9].z;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R2.xyz, R1, R3.w, R2;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R3.xyz, R3, R2.w;\n"
- "MAD R2.xyz, R3, R2, R0;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[7];\n"
- "MUL R0.xy, R0, c[5];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[8];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R1.xy, fragment.position, c[6];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[9].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[9].z;\n"
- "MAD R3.xyz, R3, c[9].x, R4;\n"
- "MUL R0.xyz, R0, c[9].x;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "MAD R2.xyz, R0, R2, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[7];\n"
- "MUL R0.xy, R0, c[5];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[8];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..8],\n"
- " { 2, 4, 1, 9.9999997e-006 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.z, c[9];\n"
- "MUL R0.x, R0, c[9];\n"
- "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MAD R0.y, R0.x, R0.x, -R0;\n"
- "RSQ R0.y, R0.y;\n"
- "RCP R0.y, R0.y;\n"
- "ADD R0.y, -R0.x, R0;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.x, R0, c[1];\n"
- "MAX R0.z, R1.w, c[9].w;\n"
- "RCP R0.z, R0.z;\n"
- "MUL R3.xyz, R1, R0.z;\n"
- "MAD R4.xyz, R3, c[10].x, -c[10].y;\n"
- "RCP R0.x, R0.x;\n"
- "MUL R0.x, R0.y, R0;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAD R2.xyz, R0, c[9].x, -R0.w;\n"
- "MAD R4.xyz, R3, R4, c[10].z;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[9].z;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[9].x;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[9].y;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MUL R2.xyz, R1, R2;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, -R0.w, c[9].z;\n"
- "MAD R2.xyz, R1, R0.x, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[7];\n"
- "MUL R0.xy, R0, c[5];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[8];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.z, -R0.y, R0;\n"
- "RCP R0.w, R0.x;\n"
- "MUL R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.xyz, R1, R0;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R1.xyz, R1, R0.w;\n"
- "MIN R1.xyz, R1, R3;\n"
- "MAD R2.xyz, -R1, c[9].x, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[7];\n"
- "MUL R1.xy, R1, c[5];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..8],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[9].x;\n"
- "MUL R0.z, R0, c[9].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[9];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.z, -R0.y, R0;\n"
- "RCP R0.w, R0.x;\n"
- "MUL R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[6];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[9].x, R3;\n"
- "ADD R2.w, -R0, c[9].z;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[9].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[7];\n"
- "MUL R1.xy, R1, c[5];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[8];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[8].x;\n"
- "MUL R0.z, R0, c[8].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.x, R0.x;\n"
- "RCP R0.z, R0.x;\n"
- "ADD R0.y, -R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[7].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R1, c[5].y;\n"
- "MOV R0.x, c[8];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.x, R0.x;\n"
- "MUL R0.x, R0.y, R0;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R3.xyz, R0.w, R2;\n"
- "MUL R2.xyz, R0, c[5].x;\n"
- "MAD R2.xyz, R1.w, R2, R3;\n"
- "ADD R2.w, -R1, c[8].z;\n"
- "MUL R0.xyz, R0, c[6].y;\n"
- "MAD R0.xyz, R2.w, R0, R2;\n"
- "ADD R2.x, -R0.w, c[8].z;\n"
- "MUL R1.xyz, R1, c[6].z;\n"
- "MAD result.color.xyz, R2.x, R1, R0;\n"
- "MUL R0.x, R0.w, R1.w;\n"
- "MUL R0.z, R1.w, R2.x;\n"
- "MUL R0.y, R0.w, R2.w;\n"
- "DP3 result.color.w, R0, c[6];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.x, R0.x;\n"
- "RCP R0.z, R0.x;\n"
- "ADD R0.y, -R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R0.x, R0.x;\n"
- "MUL R0.x, R0.y, R0;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2.x, -R1.w, c[6].z;\n"
- "MUL R2.xyz, R0, R2.x;\n"
- "MAD R0.xyz, R0, R1, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[6].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2, R0, R1;\n"
- "MAD result.color, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[6].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "MUL R0.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[6].z;\n"
- "MAD R0.xyz, R0, c[6].x, R3;\n"
- "MAD R0.xyz, R1, R2.w, R0;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R1.xyz, R1, c[6].x;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD result.color.xyz, R1, R2, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[6].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[6].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAX R1.x, R0.w, c[6].w;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R1.xyz, -R0, R1.x, c[6].z;\n"
- "MAX R2.xyz, R1, c[6].w;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[6].z;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R3.xyz, R0, R2.w, R3;\n"
- "MUL R1.xyz, R0.w, R1;\n"
- "MAD R0.xyz, R0, R1.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R1, R2, R3;\n"
- "MAD R3.xyz, R0.w, R1.w, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "ADD R3.xyz, R3, -R2;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "MAD result.color.xyz, R0, R3, R2;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[6].w;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[6].z;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R1.xyz, R1, R3.w, R2;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.x, R0.w, R1.w;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R1.xyz, R1, -R0;\n"
- "SGE R2.xyz, R3, R2.x;\n"
- "MAD result.color.xyz, R2, R1, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.z, R0.y, R0.y, -R0;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RSQ R0.z, R0.z;\n"
- "RCP R0.x, R0.z;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0.y, R0;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[6].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R2.w, -R0, c[6].z;\n"
- "MUL R0.xyz, R0, c[6].x;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MAD R3.xyz, R3, c[6].x, R4;\n"
- "MAD R1.xyz, R1, R2.w, R3;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R1;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R2, R1;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..5],\n"
- " { 2, 4, 1, 9.9999997e-006 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.z, c[6];\n"
- "MUL R0.x, R0, c[6];\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MAD R0.y, R0.x, R0.x, -R0;\n"
- "RSQ R0.y, R0.y;\n"
- "RCP R0.y, R0.y;\n"
- "ADD R0.y, -R0.x, R0;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.x, R0, c[1];\n"
- "MAX R0.z, R1.w, c[6].w;\n"
- "RCP R0.z, R0.z;\n"
- "MUL R3.xyz, R1, R0.z;\n"
- "MAD R4.xyz, R3, c[7].x, -c[7].y;\n"
- "RCP R0.x, R0.x;\n"
- "MUL R0.x, R0.y, R0;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAD R2.xyz, R0, c[6].x, -R0.w;\n"
- "MAD R4.xyz, R3, R4, c[7].z;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[6].z;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[6].x;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[6].y;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "MUL R2.xyz, R1, R2;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, R0.w, R1.w;\n"
- "ADD R0.y, -R0.w, c[6].z;\n"
- "MAD result.color.xyz, R1, R0.y, R2;\n"
- "MAD result.color.w, -R0, R1, R0.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "ADD R0.xyz, R0, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "MAD result.color.xyz, -R2, c[6].x, R0;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..5],\n"
- " { 2, 4, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.x, c[6].x;\n"
- "MUL R0.z, R0, c[6].y;\n"
- "MAD R0.x, R0.y, R0.y, -R0.z;\n"
- "RSQ R0.z, R0.x;\n"
- "MOV R0.x, c[6];\n"
- "MUL R0.w, R0.x, c[1].x;\n"
- "RCP R0.z, R0.z;\n"
- "ADD R0.x, -R0.y, R0.z;\n"
- "RCP R0.y, R0.w;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MUL R2.xyz, R0, R1;\n"
- "MAD R2.xyz, -R2, c[6].x, R3;\n"
- "ADD R2.w, -R1, c[6].z;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[6].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "ADD R0.z, R0, R0.w;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.z, c[8];\n"
- "MUL R0.x, R0, c[8];\n"
- "MAD R0.y, R0.x, R0.x, -R0;\n"
- "RSQ R0.y, R0.y;\n"
- "RCP R0.y, R0.y;\n"
- "ADD R1.x, -R0, R0.y;\n"
- "MOV R0.x, c[8];\n"
- "MUL R0.x, R0, c[1];\n"
- "RCP R1.y, R0.x;\n"
- "ADD R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "MUL R0.zw, R0, c[5].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1.x, R1, R1.y;\n"
- "DP4 R1.y, R0, c[7];\n"
- "TEX R0, R1, texture[1], 1D;\n"
- "MUL result.color, R0, R1.y;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 4 } };\n"
- "TEMP R0;\n"
- "MUL R0.xyz, fragment.position.y, c[3];\n"
- "MAD R0.xyz, fragment.position.x, c[2], R0;\n"
- "ADD R0.xyz, R0, c[4];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.xyxy;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.z, R0, R0.w;\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, -R0, c[1].x;\n"
- "MUL R0.y, R0.z, c[5];\n"
- "MUL R0.x, R0, c[5];\n"
- "MAD R0.z, R0.x, R0.x, -R0.y;\n"
- "MOV R0.y, c[5].x;\n"
- "RSQ R0.z, R0.z;\n"
- "MUL R0.w, R0.y, c[1].x;\n"
- "RCP R0.y, R0.z;\n"
- "RCP R0.z, R0.w;\n"
- "ADD R0.x, -R0, R0.y;\n"
- "MUL R0.x, R0, R0.z;\n"
- "TEX result.color, R0, texture[0], 1D;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[13] = { program.local[0..9],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[10].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[11].x, c[11].y;\n"
- "MAD R1.z, R1, R1.y, -c[11];\n"
- "MAD R1.z, R1, R1.y, c[11].w;\n"
- "MAD R1.z, R1, R1.y, -c[12].x;\n"
- "MAD R1.y, R1.z, R1, c[12];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[10].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R1.x, R0, c[10];\n"
- "FLR R1.y, R1.x;\n"
- "MUL R0.xy, fragment.position, c[7];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, R1, -R1.y;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R0, c[4].y;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[4].x;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R3.xy, fragment.position, c[8];\n"
- "ADD R2.w, -R0, c[12].z;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[5].z;\n"
- "ADD R3.z, -R1.w, c[12];\n"
- "MAD R2.xyz, R3.z, R1, R2;\n"
- "MUL R1.y, R1.w, R2.w;\n"
- "MUL R1.x, R1.w, R0.w;\n"
- "MUL R1.z, R0.w, R3;\n"
- "DP3 R2.w, R1, c[5];\n"
- "MUL R3.xy, R3, c[6];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[9];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R1.x, R0, c[8];\n"
- "FLR R1.y, R1.x;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, R1, -R1.y;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.x, -R0.w, c[10].z;\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, -R1.w, c[10].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ADD R3.xy, fragment.position, c[6];\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[8];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.z, R0.x, -R0.y;\n"
- "TEX R1, R0.z, texture[2], 1D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2, R1, R0;\n"
- "MAD R2, -R1, R0, R2;\n"
- "MUL R3.xy, R3, c[4];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].y, c[8];\n"
- "MAD R1.z, R1, R1.y, -c[8].w;\n"
- "MAD R1.z, R1, R1.y, c[9].x;\n"
- "MAD R1.z, R1, R1.y, -c[9].y;\n"
- "MAD R1.y, R1.z, R1, c[9].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[9].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[10].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[10];\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[10].z;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, -R0.w, c[10].w;\n"
- "MAD R3.xyz, R3, c[10].z, R4;\n"
- "MAD R3.xyz, R1, R2.x, R3;\n"
- "MAD R0.xyz, R1, R2.x, R0;\n"
- "MUL R2.xyz, R1, c[10].z;\n"
- "ADD R0.xyz, R0, -R3;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R0, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.z, R0.x, c[8].x;\n"
- "FLR R0.w, R0.z;\n"
- "ADD R1.x, R0.z, -R0.w;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[10].z;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[10].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.z, R0.x, c[8].x;\n"
- "FLR R0.w, R0.z;\n"
- "ADD R1.x, R0.z, -R0.w;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[10].z;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[10].z;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].y, c[8];\n"
- "MAD R1.z, R1, R1.y, -c[8].w;\n"
- "MAD R1.z, R1, R1.y, c[9].x;\n"
- "MAD R1.z, R1, R1.y, -c[9].y;\n"
- "MAD R1.y, R1.z, R1, c[9].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[9].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[10].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAX R1.x, R0.w, c[10].w;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R1.xyz, -R0, R1.x, c[10].z;\n"
- "MAX R2.xyz, R1, c[10].w;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[10].z;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[10].z;\n"
- "MAD R4.xyz, R0, R2.w, R3;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R0.xyz, R0, R1.w, R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R3, R2, R4;\n"
- "MAD R4.xyz, R0.w, R1.w, R4;\n"
- "ADD R4.xyz, R4, -R2;\n"
- "MAD R2.xyz, R0, R4, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.w, R0.x;\n"
- "ABS R0.z, R0.y;\n"
- "ADD R0.z, R0, -R0.w;\n"
- "ADD R1.x, R0.y, c[8];\n"
- "ABS R0.z, R0;\n"
- "CMP R0.y, -R0.z, R0, R1.x;\n"
- "ABS R0.z, -R0.y;\n"
- "MAX R1.x, R0.w, R0.z;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.w, R0.z;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].y, c[8];\n"
- "MAD R1.z, R1, R1.y, -c[8].w;\n"
- "MAD R1.z, R1, R1.y, c[9].x;\n"
- "MAD R1.z, R1, R1.y, -c[9].y;\n"
- "MAD R1.y, R1.z, R1, c[9].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[9].w;\n"
- "ADD R0.z, -R0.w, R0;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[10].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[10].w;\n"
- "ADD R2.w, -R1, c[10].z;\n"
- "ADD R3.w, -R0, c[10].z;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R2.xyz, R1, R3.w, R2;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R3.xyz, R3, R2.w;\n"
- "MAD R2.xyz, R3, R2, R0;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].y, c[8];\n"
- "MAD R1.z, R1, R1.y, -c[8].w;\n"
- "MAD R1.z, R1, R1.y, c[9].x;\n"
- "MAD R1.z, R1, R1.y, -c[9].y;\n"
- "MAD R1.y, R1.z, R1, c[9].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[9].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[10].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[10];\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[10].z;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[10];\n"
- "MAD R3.xyz, R3, c[10].z, R4;\n"
- "MUL R0.xyz, R0, c[10].z;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "MAD R2.xyz, R0, R2, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[13] = { program.local[0..7],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 2 },\n"
- " { 9.9999997e-006, 4, 16, 12 },\n"
- " { 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.w, R0.x;\n"
- "ABS R0.z, R0.y;\n"
- "ADD R0.z, R0, -R0.w;\n"
- "ADD R1.x, R0.y, c[8];\n"
- "ABS R0.z, R0;\n"
- "CMP R0.y, -R0.z, R0, R1.x;\n"
- "ABS R0.z, -R0.y;\n"
- "MAX R1.x, R0.w, R0.z;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.w, R0.z;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].y, c[8];\n"
- "MAD R1.z, R1, R1.y, -c[8].w;\n"
- "MAD R1.z, R1, R1.y, c[9].x;\n"
- "MAD R1.z, R1, R1.y, -c[9].y;\n"
- "MAD R1.y, R1.z, R1, c[9].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[9].w;\n"
- "ADD R0.z, -R0.w, R0;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[10].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MAX R0.z, R1.w, c[11].x;\n"
- "RCP R2.x, R0.z;\n"
- "MUL R3.xyz, R1, R2.x;\n"
- "MAD R4.xyz, R3, c[11].z, -c[11].w;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[10].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAD R2.xyz, R0, c[10].w, -R0.w;\n"
- "MAD R4.xyz, R3, R4, c[12].x;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[10].z;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[10].w;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[11].y;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MUL R2.xyz, R1, R2;\n"
- "ADD R2.w, -R1, c[10].z;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, -R0.w, c[10].z;\n"
- "MAD R2.xyz, R1, R0.x, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.z, R0.x, c[8].x;\n"
- "FLR R0.w, R0.z;\n"
- "ADD R1.x, R0.z, -R0.w;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.xyz, R1, R0;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R1.xyz, R1, R0.w;\n"
- "MIN R1.xyz, R1, R3;\n"
- "MAD R2.xyz, -R1, c[10].z, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..7],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[8].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[9].x, c[9].y;\n"
- "MAD R1.z, R1, R1.y, -c[9];\n"
- "MAD R1.z, R1, R1.y, c[9].w;\n"
- "MAD R1.z, R1, R1.y, -c[10].x;\n"
- "MAD R1.y, R1.z, R1, c[10];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[8].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[8].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.z, R0.x, c[8].x;\n"
- "FLR R0.w, R0.z;\n"
- "ADD R1.x, R0.z, -R0.w;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[10].z, R3;\n"
- "ADD R2.w, -R0, c[10];\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[10].w;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..6],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[7].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].x, c[8].y;\n"
- "MAD R1.z, R1, R1.y, -c[8];\n"
- "MAD R1.z, R1, R1.y, c[8].w;\n"
- "MAD R1.z, R1, R1.y, -c[9].x;\n"
- "MAD R1.y, R1.z, R1, c[9];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[7].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R1, c[4].y;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R3.xyz, R0.w, R2;\n"
- "MUL R2.xyz, R0, c[4].x;\n"
- "MAD R2.xyz, R1.w, R2, R3;\n"
- "ADD R2.w, -R1, c[9].z;\n"
- "MUL R0.xyz, R0, c[5].y;\n"
- "MAD R0.xyz, R2.w, R0, R2;\n"
- "ADD R2.x, -R0.w, c[9].z;\n"
- "MUL R1.xyz, R1, c[5].z;\n"
- "MAD result.color.xyz, R2.x, R1, R0;\n"
- "MUL R0.x, R0.w, R1.w;\n"
- "MUL R0.z, R1.w, R2.x;\n"
- "MUL R0.y, R0.w, R2.w;\n"
- "DP3 result.color.w, R0, c[5];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2.x, -R1.w, c[7].z;\n"
- "MUL R2.xyz, R0, R2.x;\n"
- "MAD R0.xyz, R0, R1, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[7].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2, R0, R1;\n"
- "MAD result.color, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].y, c[5];\n"
- "MAD R1.z, R1, R1.y, -c[5].w;\n"
- "MAD R1.z, R1, R1.y, c[6].x;\n"
- "MAD R1.z, R1, R1.y, -c[6].y;\n"
- "MAD R1.y, R1.z, R1, c[6].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[6].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[7];\n"
- "MUL R2.xyz, R2, c[7].z;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "MUL R0.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[7];\n"
- "MAD R0.xyz, R0, c[7].z, R3;\n"
- "MAD R0.xyz, R1, R2.w, R0;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R1.xyz, R1, c[7].z;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD result.color.xyz, R1, R2, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[7].z;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[7].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[7].z;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[7].z;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].y, c[5];\n"
- "MAD R1.z, R1, R1.y, -c[5].w;\n"
- "MAD R1.z, R1, R1.y, c[6].x;\n"
- "MAD R1.z, R1, R1.y, -c[6].y;\n"
- "MAD R1.y, R1.z, R1, c[6].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[6].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAX R1.x, R0.w, c[7].w;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R1.xyz, -R0, R1.x, c[7].z;\n"
- "MAX R2.xyz, R1, c[7].w;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[7].z;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[7].z;\n"
- "MAD R3.xyz, R0, R2.w, R3;\n"
- "MUL R1.xyz, R0.w, R1;\n"
- "MAD R0.xyz, R0, R1.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R1, R2, R3;\n"
- "MAD R3.xyz, R0.w, R1.w, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "ADD R3.xyz, R3, -R2;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "MAD result.color.xyz, R0, R3, R2;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.w, R0.x;\n"
- "ABS R0.z, R0.y;\n"
- "ADD R0.z, R0, -R0.w;\n"
- "ADD R1.x, R0.y, c[5];\n"
- "ABS R0.z, R0;\n"
- "CMP R0.y, -R0.z, R0, R1.x;\n"
- "ABS R0.z, -R0.y;\n"
- "MAX R1.x, R0.w, R0.z;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.w, R0.z;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].y, c[5];\n"
- "MAD R1.z, R1, R1.y, -c[5].w;\n"
- "MAD R1.z, R1, R1.y, c[6].x;\n"
- "MAD R1.z, R1, R1.y, -c[6].y;\n"
- "MAD R1.y, R1.z, R1, c[6].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[6].w;\n"
- "ADD R0.z, -R0.w, R0;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "ADD R2.w, -R1, c[7].z;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[7].w;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[7].z;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R1.xyz, R1, R3.w, R2;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.x, R0.w, R1.w;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R1.xyz, R1, -R0;\n"
- "SGE R2.xyz, R3, R2.x;\n"
- "MAD result.color.xyz, R2, R1, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5];\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].y, c[5];\n"
- "MAD R1.z, R1, R1.y, -c[5].w;\n"
- "MAD R1.z, R1, R1.y, c[6].x;\n"
- "MAD R1.z, R1, R1.y, -c[6].y;\n"
- "MAD R1.y, R1.z, R1, c[6].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[6].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[7];\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[7].z;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R2.w, -R0, c[7];\n"
- "MUL R0.xyz, R0, c[7].z;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MAD R3.xyz, R3, c[7].z, R4;\n"
- "MAD R1.xyz, R1, R2.w, R3;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R1;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R2, R1;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..4],\n"
- " { 0.0020000001, -0.01348047, 0.05747731, 0.1212391 },\n"
- " { 0.1956359, 0.33299461, 0.99999559, 1.570796 },\n"
- " { 3.141593, 0.15915494, 1, 2 },\n"
- " { 9.9999997e-006, 4, 16, 12 },\n"
- " { 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.w, R0.x;\n"
- "ABS R0.z, R0.y;\n"
- "ADD R0.z, R0, -R0.w;\n"
- "ADD R1.x, R0.y, c[5];\n"
- "ABS R0.z, R0;\n"
- "CMP R0.y, -R0.z, R0, R1.x;\n"
- "ABS R0.z, -R0.y;\n"
- "MAX R1.x, R0.w, R0.z;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.w, R0.z;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].y, c[5];\n"
- "MAD R1.z, R1, R1.y, -c[5].w;\n"
- "MAD R1.z, R1, R1.y, c[6].x;\n"
- "MAD R1.z, R1, R1.y, -c[6].y;\n"
- "MAD R1.y, R1.z, R1, c[6].z;\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[6].w;\n"
- "ADD R0.z, -R0.w, R0;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].x;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MAX R0.z, R1.w, c[8].x;\n"
- "RCP R2.x, R0.z;\n"
- "MUL R3.xyz, R1, R2.x;\n"
- "MAD R4.xyz, R3, c[8].z, -c[8].w;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[7].y;\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAD R2.xyz, R0, c[7].w, -R0.w;\n"
- "MAD R4.xyz, R3, R4, c[9].x;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[7].z;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[7].w;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[8].y;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "MUL R2.xyz, R1, R2;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "ADD R2.w, -R1, c[7].z;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, R0.w, R1.w;\n"
- "ADD R0.y, -R0.w, c[7].z;\n"
- "MAD result.color.xyz, R1, R0.y, R2;\n"
- "MAD result.color.w, -R0, R1, R0.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "ADD R0.xyz, R0, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "MAD result.color.xyz, -R2, c[7].z, R0;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..4],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559, 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[5].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[6].x, c[6].y;\n"
- "MAD R1.z, R1, R1.y, -c[6];\n"
- "MAD R1.z, R1, R1.y, c[6].w;\n"
- "MAD R1.z, R1, R1.y, -c[7].x;\n"
- "MAD R1.y, R1.z, R1, c[7];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[5].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[5].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[5];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MUL R2.xyz, R0, R1;\n"
- "MAD R2.xyz, -R2, c[7].z, R3;\n"
- "ADD R2.w, -R1, c[7];\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[7].w;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..6],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[7].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[8].x, c[8].y;\n"
- "MAD R1.z, R1, R1.y, -c[8];\n"
- "MAD R1.z, R1, R1.y, c[8].w;\n"
- "MAD R1.z, R1, R1.y, -c[9].x;\n"
- "MAD R1.y, R1.z, R1, c[9];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R1.y, -R1.x, c[7].w;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[7].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R1.x, R0, c[7];\n"
- "FLR R1.y, R1.x;\n"
- "ADD R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "MUL R0.xy, R0.zwzw, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, R1, -R1.y;\n"
- "DP4 R1.y, R0, c[6];\n"
- "TEX R0, R1, texture[1], 1D;\n"
- "MUL result.color, R0, R1.y;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..3],\n"
- " { 0.15915494, 0.0020000001, 3.141593, 1.570796 },\n"
- " { -0.01348047, 0.05747731, 0.1212391, 0.1956359 },\n"
- " { 0.33299461, 0.99999559 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "ABS R0.z, R0.x;\n"
- "ABS R0.w, R0.y;\n"
- "ADD R0.w, R0, -R0.z;\n"
- "ADD R1.x, R0.y, c[4].y;\n"
- "ABS R0.w, R0;\n"
- "CMP R0.y, -R0.w, R0, R1.x;\n"
- "ABS R0.w, -R0.y;\n"
- "MAX R1.x, R0.z, R0.w;\n"
- "RCP R1.y, R1.x;\n"
- "MIN R1.x, R0.z, R0.w;\n"
- "MUL R1.x, R1, R1.y;\n"
- "MUL R1.y, R1.x, R1.x;\n"
- "MAD R1.z, R1.y, c[5].x, c[5].y;\n"
- "MAD R1.z, R1, R1.y, -c[5];\n"
- "MAD R1.z, R1, R1.y, c[5].w;\n"
- "MAD R1.z, R1, R1.y, -c[6].x;\n"
- "MAD R1.y, R1.z, R1, c[6];\n"
- "MUL R1.x, R1.y, R1;\n"
- "ADD R0.z, -R0, R0.w;\n"
- "ADD R1.y, -R1.x, c[4].w;\n"
- "CMP R0.z, -R0, R1.y, R1.x;\n"
- "ADD R0.w, -R0.z, c[4].z;\n"
- "CMP R0.x, R0, R0.w, R0.z;\n"
- "CMP R0.x, -R0.y, -R0, R0;\n"
- "ADD R0.x, R0, c[0];\n"
- "MUL R0.x, R0, c[4];\n"
- "FLR R0.y, R0.x;\n"
- "ADD R0.x, R0, -R0.y;\n"
- "TEX result.color, R0, texture[0], 1D;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..9],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, c[0].xyxy;\n"
- "ADD R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[7];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.x, R1, c[0].z;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R0, c[4].y;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[4].x;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R3.xy, fragment.position, c[8];\n"
- "ADD R2.w, -R0, c[10].x;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[5].z;\n"
- "ADD R3.z, -R1.w, c[10].x;\n"
- "MAD R2.xyz, R3.z, R1, R2;\n"
- "MUL R1.y, R1.w, R2.w;\n"
- "MUL R1.x, R1.w, R0.w;\n"
- "MUL R1.z, R0.w, R3;\n"
- "DP3 R2.w, R1, c[5];\n"
- "MUL R3.xy, R3, c[6];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[9];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, c[0].xyxy;\n"
- "ADD R1.x, R0.z, R0.w;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.x, R1, c[0].z;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.x, -R0.w, c[8];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..7] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.z, R0.x, c[0];\n"
- "ADD R3.xy, fragment.position, c[6];\n"
- "TEX R1, R0.z, texture[2], 1D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2, R1, R0;\n"
- "MAD R2, -R1, R0, R2;\n"
- "MUL R3.xy, R3, c[4];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[8].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, -R0.w, c[8].y;\n"
- "MAD R3.xyz, R3, c[8].x, R4;\n"
- "MAD R3.xyz, R1, R2.x, R3;\n"
- "MAD R0.xyz, R1, R2.x, R0;\n"
- "MUL R2.xyz, R1, c[8].x;\n"
- "ADD R0.xyz, R0, -R3;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R0, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.z, R0.x, R0.y;\n"
- "MUL R1.x, R0.z, c[0].z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.z, R0.x, R0.y;\n"
- "MUL R1.x, R0.z, c[0].z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAX R1.x, R0.w, c[8].y;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R2.xyz, -R0, R1.x, c[8].x;\n"
- "MAX R2.xyz, R2, c[8].y;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MAD R4.xyz, R0, R2.w, R3;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R0.xyz, R0, R1.w, R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R3, R2, R4;\n"
- "MAD R4.xyz, R0.w, R1.w, R4;\n"
- "ADD R4.xyz, R4, -R2;\n"
- "MAD R2.xyz, R0, R4, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[8].y;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[8].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R2.xyz, R1, R3.w, R2;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R3.xyz, R3, R2.w;\n"
- "MAD R2.xyz, R3, R2, R0;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[8].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[8].y;\n"
- "MAD R3.xyz, R3, c[8].x, R4;\n"
- "MUL R0.xyz, R0, c[8].x;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "MAD R2.xyz, R0, R2, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..7],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MAX R0.z, R1.w, c[8];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R3.xyz, R1, R0.z;\n"
- "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[2], 1D;\n"
- "MAD R4.xyz, R3, R2, c[9].z;\n"
- "MAD R2.xyz, R0, c[8].y, -R0.w;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[8].x;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[8].y;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[8].w;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MUL R2.xyz, R1, R2;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, -R0.w, c[8];\n"
- "MAD R2.xyz, R1, R0.x, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.z, R0.x, R0.y;\n"
- "MUL R1.x, R0.z, c[0].z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "ADD R2.xyz, R1, R0;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R1.xyz, R1, R0.w;\n"
- "MIN R1.xyz, R1, R3;\n"
- "MAD R2.xyz, -R1, c[8].x, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.z, R0.x, R0.y;\n"
- "MUL R1.x, R0.z, c[0].z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 1D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[8].x, R3;\n"
- "ADD R2.w, -R0, c[8].y;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8].y;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..6],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R1, c[4].y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R3.xyz, R0.w, R2;\n"
- "MUL R2.xyz, R0, c[4].x;\n"
- "MAD R2.xyz, R1.w, R2, R3;\n"
- "ADD R2.w, -R1, c[7].x;\n"
- "MUL R0.xyz, R0, c[5].y;\n"
- "MAD R0.xyz, R2.w, R0, R2;\n"
- "ADD R2.x, -R0.w, c[7];\n"
- "MUL R1.xyz, R1, c[5].z;\n"
- "MAD result.color.xyz, R2.x, R1, R0;\n"
- "MUL R0.x, R0.w, R1.w;\n"
- "MUL R0.z, R1.w, R2.x;\n"
- "MUL R0.y, R0.w, R2.w;\n"
- "DP3 result.color.w, R0, c[5];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2.x, -R1.w, c[5];\n"
- "MUL R2.xyz, R0, R2.x;\n"
- "MAD R0.xyz, R0, R1, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..4] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "ADD R2, R0, R1;\n"
- "MAD result.color, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "MUL R2.xyz, R2, c[5].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "MUL R0.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[5].y;\n"
- "MAD R0.xyz, R0, c[5].x, R3;\n"
- "MAD R0.xyz, R1, R2.w, R0;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R1.xyz, R1, c[5].x;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD result.color.xyz, R1, R2, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAX R1.x, R0.w, c[5].y;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R3.xyz, -R0, R1.x, c[5].x;\n"
- "MAX R3.xyz, R3, c[5].y;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.x, -R0.w, c[5];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R1.xyz, R0.w, R1;\n"
- "MAD R0.xyz, R0, R1.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "RCP R3.x, R3.x;\n"
- "RCP R3.y, R3.y;\n"
- "RCP R3.z, R3.z;\n"
- "MAD R3.xyz, R1, R3, R2;\n"
- "MAD R2.xyz, R0.w, R1.w, R2;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "MAD result.color.xyz, R0, R2, R3;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[5].y;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[5].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R1.xyz, R1, R3.w, R2;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.x, R0.w, R1.w;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R1.xyz, R1, -R0;\n"
- "SGE R2.xyz, R3, R2.x;\n"
- "MAD result.color.xyz, R2, R1, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[5].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MUL R0.xyz, R0, c[5].x;\n"
- "ADD R2.w, -R0, c[5].y;\n"
- "MAD R3.xyz, R3, c[5].x, R4;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R1.xyz, R1, -R3;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R1, R3;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..4],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MAX R0.z, R1.w, c[5];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R3.xyz, R1, R0.z;\n"
- "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MAD R4.xyz, R3, R2, c[6].z;\n"
- "MAD R2.xyz, R0, c[5].y, -R0.w;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[5].x;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[5].y;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[5].w;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "MUL R2.xyz, R1, R2;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, R0.w, R1.w;\n"
- "ADD R0.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R0.y, R2;\n"
- "MAD result.color.w, -R0, R1, R0.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "ADD R0.xyz, R0, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "MAD result.color.xyz, -R2, c[5].x, R0;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX R0, R0, texture[1], 1D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MUL R2.xyz, R0, R1;\n"
- "MAD R2.xyz, -R2, c[5].x, R3;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5];\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..6] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R0.zw, R0, c[0].xyxy;\n"
- "ADD R1.x, R0.z, R0.w;\n"
- "ADD R0.xy, fragment.position, c[5];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "DP4 R1.y, R0, c[6];\n"
- "MUL R1.x, R1, c[0].z;\n"
- "TEX R0, R1, texture[1], 1D;\n"
- "MUL result.color, R0, R1.y;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[4] = { program.local[0..3] };\n"
- "TEMP R0;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "ADD R0.x, R0, R0.y;\n"
- "MUL R0.x, R0, c[0].z;\n"
- "TEX result.color, R0, texture[0], 1D;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..9],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R1.xyz, R0, c[3];\n"
- "RCP R0.z, R1.z;\n"
- "MUL R1.xy, R1, R0.z;\n"
- "MUL R0.xy, fragment.position, c[7];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "MUL R2.xyz, R0, c[4].y;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[4].x;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R3.xy, fragment.position, c[8];\n"
- "ADD R2.w, -R0, c[10].x;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[5].z;\n"
- "ADD R3.z, -R1.w, c[10].x;\n"
- "MAD R2.xyz, R3.z, R1, R2;\n"
- "MUL R1.y, R1.w, R2.w;\n"
- "MUL R1.x, R1.w, R0.w;\n"
- "MUL R1.z, R0.w, R3;\n"
- "DP3 R2.w, R1, c[5];\n"
- "MUL R3.xy, R3, c[6];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[9];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R1.xyz, R0, c[3];\n"
- "RCP R0.z, R1.z;\n"
- "MUL R1.xy, R1, R0.z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "ADD R2.x, -R0.w, c[8];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..7] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, c[0].xyxy;\n"
- "ADD R3.xy, fragment.position, c[6];\n"
- "TEX R1, R0.zwzw, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2, R1, R0;\n"
- "MAD R2, -R1, R0, R2;\n"
- "MUL R3.xy, R3, c[4];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[2], 2D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[8].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, -R0.w, c[8].y;\n"
- "MAD R3.xyz, R3, c[8].x, R4;\n"
- "MAD R3.xyz, R1, R2.x, R3;\n"
- "MAD R0.xyz, R1, R2.x, R0;\n"
- "MUL R2.xyz, R1, c[8].x;\n"
- "ADD R0.xyz, R0, -R3;\n"
- "SGE R2.xyz, R2, R1.w;\n"
- "MAD R2.xyz, R2, R0, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R1.xy, R0.zwzw, c[0];\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R1.xy, R0.zwzw, c[0];\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[2], 2D;\n"
- "MAX R1.x, R0.w, c[8].y;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R2.xyz, -R0, R1.x, c[8].x;\n"
- "MAX R2.xyz, R2, c[8].y;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MAD R4.xyz, R0, R2.w, R3;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R0.xyz, R0, R1.w, R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R3, R2, R4;\n"
- "MAD R4.xyz, R0.w, R1.w, R4;\n"
- "ADD R4.xyz, R4, -R2;\n"
- "MAD R2.xyz, R0, R4, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[2], 2D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[8].y;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[8].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.w, R0, R1;\n"
- "MAD R2.xyz, R1, R3.w, R2;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R3.xyz, R3, R2.w;\n"
- "MAD R2.xyz, R3, R2, R0;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[2], 2D;\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[8].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[8].y;\n"
- "MAD R3.xyz, R3, c[8].x, R4;\n"
- "MUL R0.xyz, R0, c[8].x;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "MAD R2.xyz, R0, R2, R3;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..7],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MUL R1.xy, fragment.position, c[5];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MAX R0.w, R1, c[8].z;\n"
- "RCP R0.w, R0.w;\n"
- "MUL R3.xyz, R1, R0.w;\n"
- "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[2], 2D;\n"
- "MAD R4.xyz, R3, R2, c[9].z;\n"
- "MAD R2.xyz, R0, c[8].y, -R0.w;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[8].x;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[8].y;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[8].w;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MUL R2.xyz, R1, R2;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, -R0.w, c[8];\n"
- "MAD R2.xyz, R1, R0.x, R2;\n"
- "ADD R0.z, R0.w, R1.w;\n"
- "MAD R2.w, -R0, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[6];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R2, -R1;\n"
- "DP4 R0.x, R0, c[7];\n"
- "MAD result.color, R0.x, R2, R1;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R1.xy, R0.zwzw, c[0];\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "ADD R2.xyz, R1, R0;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R1.xyz, R1, R0.w;\n"
- "MIN R1.xyz, R1, R3;\n"
- "MAD R2.xyz, -R1, c[8].x, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R1.xy, R0.zwzw, c[0];\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "TEX R1, R1, texture[2], 2D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[8].x, R3;\n"
- "ADD R2.w, -R0, c[8].y;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8].y;\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..6],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R1.xy, fragment.position, c[6];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R2.xyz, R1, c[4].y;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R3.xyz, R0.w, R2;\n"
- "MUL R2.xyz, R0, c[4].x;\n"
- "MAD R2.xyz, R1.w, R2, R3;\n"
- "ADD R2.w, -R1, c[7].x;\n"
- "MUL R0.xyz, R0, c[5].y;\n"
- "MAD R0.xyz, R2.w, R0, R2;\n"
- "ADD R2.x, -R0.w, c[7];\n"
- "MUL R1.xyz, R1, c[5].z;\n"
- "MAD result.color.xyz, R2.x, R1, R0;\n"
- "MUL R0.x, R0.w, R1.w;\n"
- "MUL R0.z, R1.w, R2.x;\n"
- "MUL R0.y, R0.w, R2.w;\n"
- "DP3 result.color.w, R0, c[5];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2.x, -R1.w, c[5];\n"
- "MUL R2.xyz, R0, R2.x;\n"
- "MAD R0.xyz, R0, R1, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..4] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "ADD R2, R0, R1;\n"
- "MAD result.color, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "MUL R2.xyz, R2, c[5].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "MUL R0.xyz, R0, R1;\n"
- "ADD R2.w, -R0, c[5].y;\n"
- "MAD R0.xyz, R0, c[5].x, R3;\n"
- "MAD R0.xyz, R1, R2.w, R0;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R1.xyz, R1, c[5].x;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R2.xyz, R2, -R0;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD result.color.xyz, R1, R2, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MAX R1.x, R0.w, c[5].y;\n"
- "RCP R1.x, R1.x;\n"
- "MAD R3.xyz, -R0, R1.x, c[5].x;\n"
- "MAX R3.xyz, R3, c[5].y;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.x, -R0.w, c[5];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R1.xyz, R0.w, R1;\n"
- "MAD R0.xyz, R0, R1.w, R1;\n"
- "MUL R2.w, R0, R1;\n"
- "RCP R3.x, R3.x;\n"
- "RCP R3.y, R3.y;\n"
- "RCP R3.z, R3.z;\n"
- "MAD R3.xyz, R1, R3, R2;\n"
- "MAD R2.xyz, R0.w, R1.w, R2;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "MAD result.color.xyz, R0, R2, R3;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, -R0.w, R1.w, R3;\n"
- "MUL R4.xyz, R0.w, R2;\n"
- "MAX R2.xyz, R0, c[5].y;\n"
- "MUL R5.xyz, R0, R2.w;\n"
- "ADD R3.w, -R0, c[5].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R1, R3.w;\n"
- "MAD R1.xyz, R1, R3.w, R2;\n"
- "MAD R0.xyz, R0, R2.w, R4;\n"
- "MUL R2.x, R0.w, R1.w;\n"
- "ADD R2.w, R0, R1;\n"
- "ADD R1.xyz, R1, -R0;\n"
- "SGE R2.xyz, R3, R2.x;\n"
- "MAD result.color.xyz, R2, R1, R0;\n"
- "MAD result.color.w, -R0, R1, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "ADD R3.xyz, R0.w, -R0;\n"
- "ADD R2.xyz, R1.w, -R1;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[5].x;\n"
- "MAD R2.xyz, R0.w, R1.w, -R2;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R4.xyz, R0, R2.w;\n"
- "MUL R3.xyz, R0, R1;\n"
- "MUL R0.xyz, R0, c[5].x;\n"
- "ADD R2.w, -R0, c[5].y;\n"
- "MAD R3.xyz, R3, c[5].x, R4;\n"
- "MAD R3.xyz, R1, R2.w, R3;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R1.xyz, R1, -R3;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R1, R3;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..4],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MUL R1.xy, fragment.position, c[4];\n"
- "TEX R1, R1, texture[0], 2D;\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MAX R0.w, R1, c[5].z;\n"
- "RCP R0.w, R0.w;\n"
- "MUL R3.xyz, R1, R0.w;\n"
- "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MAD R4.xyz, R3, R2, c[6].z;\n"
- "MAD R2.xyz, R0, c[5].y, -R0.w;\n"
- "MUL R5.xyz, R1.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[5].x;\n"
- "MAD R2.xyz, R2, R3, R0.w;\n"
- "MUL R3.xyz, R0, c[5].y;\n"
- "MAD R5.xyz, R0.w, R1, R6;\n"
- "MAD R4.xyz, R0.w, R1, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R1, c[5].w;\n"
- "SGE R4.xyz, R4, R1.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R1, R2, R4;\n"
- "MUL R2.xyz, R1, R2;\n"
- "SGE R3.xyz, R3, R0.w;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R0.x, R0.w, R1.w;\n"
- "ADD R0.y, -R0.w, c[5].x;\n"
- "MAD result.color.xyz, R1, R0.y, R2;\n"
- "MAD result.color.w, -R0, R1, R0.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R2.xyz, R0, R1.w;\n"
- "MUL R3.xyz, R0.w, R1;\n"
- "ADD R0.xyz, R0, R1;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R1.x, R0.w, R1.w;\n"
- "MAD result.color.xyz, -R2, c[5].x, R0;\n"
- "MAD result.color.w, -R0, R1, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 2, 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R1, R0.zwzw, texture[0], 2D;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0, R0, texture[1], 2D;\n"
- "MUL R2.xyz, R0.w, R1;\n"
- "MAD R3.xyz, R0, R1.w, R2;\n"
- "MUL R2.xyz, R0, R1;\n"
- "MAD R2.xyz, -R2, c[5].x, R3;\n"
- "ADD R2.w, -R1, c[5].y;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R0.w, R1.w;\n"
- "ADD R2.y, -R0.w, c[5];\n"
- "MAD result.color.xyz, R1, R2.y, R0;\n"
- "MAD result.color.w, -R0, R1, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..6] };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R1.xyz, R0, c[3];\n"
- "RCP R0.z, R1.z;\n"
- "MUL R1.xy, R1, R0.z;\n"
- "ADD R0.xy, fragment.position, c[5];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "DP4 R1.z, R0, c[6];\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R0, R1, texture[1], 2D;\n"
- "MUL result.color, R0, R1.z;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[4] = { program.local[0..3] };\n"
- "TEMP R0;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX result.color, R0, texture[0], 2D;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF =
- "!!ARBfp1.0\n"
- "PARAM c[11] = { program.local[0..9],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, c[0].xyxy;\n"
- "TEX R1.x, R0.zwzw, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[7];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[10];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R2.xyz, R0, c[4].y;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[4].x;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R3.xy, fragment.position, c[8];\n"
- "ADD R2.w, -R0, c[10].x;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "MAD R2.xyz, R2.w, R1, R2;\n"
- "MUL R1.xyz, R0, c[5].z;\n"
- "ADD R3.z, -R1.w, c[10].x;\n"
- "MAD R2.xyz, R3.z, R1, R2;\n"
- "MUL R1.y, R1.w, R2.w;\n"
- "MUL R1.x, R1.w, R0.w;\n"
- "MUL R1.z, R0.w, R3;\n"
- "DP3 R2.w, R1, c[5];\n"
- "MUL R3.xy, R3, c[6];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[9];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.zw, R0.xyxy, c[0].xyxy;\n"
- "TEX R1.x, R0.zwzw, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "ADD R2.x, -R0.w, c[8];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[2], 2D;\n"
- "ADD R0.z, -R0.x, c[8].x;\n"
- "ADD R3.xy, fragment.position, c[6];\n"
- "MUL R1, fragment.color.primary, R0.z;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2, R1, R0;\n"
- "MAD R2, -R1, R0, R2;\n"
- "MUL R3.xy, R3, c[4];\n"
- "TEX R1, R3, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[2], 2D;\n"
- "ADD R0.x, -R0, c[8];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "ADD R3.xyz, R1.w, -R1;\n"
- "ADD R2.xyz, R0.w, -R0;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].y;\n"
- "MAD R2.xyz, R1.w, R0.w, -R2;\n"
- "MUL R4.xyz, R1, R2.w;\n"
- "MUL R3.xyz, R1, R0;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R3.xyz, R3, c[8].y, R4;\n"
- "MAD R3.xyz, R0, R2.x, R3;\n"
- "MAD R1.xyz, R0, R2.x, R1;\n"
- "MUL R2.xyz, R0, c[8].y;\n"
- "ADD R1.xyz, R1, -R3;\n"
- "SGE R2.xyz, R2, R0.w;\n"
- "MAD R2.xyz, R2, R1, R3;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[2], 2D;\n"
- "ADD R0.x, -R0, c[8];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MAX R0.x, R1.w, c[8].y;\n"
- "RCP R0.x, R0.x;\n"
- "MAD R2.xyz, -R1, R0.x, c[8].x;\n"
- "MAX R2.xyz, R2, c[8].y;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MUL R3.xyz, R0, R2.w;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R4.xyz, R1, R2.w, R3;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.w, R1, R0;\n"
- "MAD R1.xyz, R1, R0.w, R3;\n"
- "SGE R1.xyz, R1, R2.w;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R3, R2, R4;\n"
- "MAD R4.xyz, R1.w, R0.w, R4;\n"
- "ADD R4.xyz, R4, -R2;\n"
- "MAD R2.xyz, R1, R4, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[2], 2D;\n"
- "ADD R1.x, -R0, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MAD R2.xyz, -R1.w, R0.w, R3;\n"
- "MUL R4.xyz, R1.w, R2;\n"
- "MAX R2.xyz, R1, c[8].y;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MUL R5.xyz, R1, R2.w;\n"
- "ADD R3.w, -R1, c[8].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R0, R3.w;\n"
- "MAD R1.xyz, R1, R2.w, R4;\n"
- "MUL R2.w, R1, R0;\n"
- "MAD R2.xyz, R0, R3.w, R2;\n"
- "ADD R2.xyz, R2, -R1;\n"
- "SGE R3.xyz, R3, R2.w;\n"
- "MAD R2.xyz, R3, R2, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[2], 2D;\n"
- "ADD R0.x, -R0, c[8];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[5].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "ADD R3.xyz, R1.w, -R1;\n"
- "ADD R2.xyz, R0.w, -R0;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[8].y;\n"
- "MAD R2.xyz, R1.w, R0.w, -R2;\n"
- "MUL R4.xyz, R1, R2.w;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R3.xyz, R1, R0;\n"
- "ADD R2.w, -R1, c[8].x;\n"
- "MAD R3.xyz, R3, c[8].y, R4;\n"
- "MUL R1.xyz, R1, c[8].y;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD R3.xyz, R0, R2.w, R3;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "MAD R2.xyz, R1, R2, R3;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT =
- "!!ARBfp1.0\n"
- "PARAM c[10] = { program.local[0..7],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R1.xyz, R0, c[3];\n"
- "RCP R1.z, R1.z;\n"
- "MUL R1.xy, R1, R1.z;\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1.x, R1, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MAX R1.z, R0.w, c[8];\n"
- "RCP R1.z, R1.z;\n"
- "MUL R3.xyz, R0, R1.z;\n"
- "MAD R2.xyz, R3, c[9].x, -c[9].y;\n"
- "ADD R1.x, -R1, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MAD R4.xyz, R3, R2, c[9].z;\n"
- "MAD R2.xyz, R1, c[8].y, -R1.w;\n"
- "MUL R5.xyz, R0.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[8].x;\n"
- "MAD R2.xyz, R2, R3, R1.w;\n"
- "MUL R3.xyz, R1, c[8].y;\n"
- "MAD R5.xyz, R1.w, R0, R6;\n"
- "MAD R4.xyz, R1.w, R0, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R0, c[8].w;\n"
- "SGE R4.xyz, R4, R0.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R0, R2, R4;\n"
- "SGE R3.xyz, R3, R1.w;\n"
- "MUL R2.xyz, R0, R2;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R1.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R1.x, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "ADD R1.x, -R1, c[8];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "ADD R2.xyz, R1, R0;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R1.xyz, R1, R0.w;\n"
- "MIN R1.xyz, R1, R3;\n"
- "MAD R2.xyz, -R1, c[8].y, R2;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION =
- "!!ARBfp1.0\n"
- "PARAM c[9] = { program.local[0..7],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[2], 2D;\n"
- "MUL R0.xy, fragment.position, c[5];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[8];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[8].y, R3;\n"
- "ADD R2.w, -R0, c[8].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, -R1.w, c[8];\n"
- "MAD R2.xyz, R0, R2.x, R1;\n"
- "ADD R1.z, R1.w, R0.w;\n"
- "MAD R2.w, -R1, R0, R1.z;\n"
- "ADD R1.xy, fragment.position, c[6];\n"
- "MUL R1.xy, R1, c[4];\n"
- "TEX R1, R1, texture[1], 2D;\n"
- "ADD R2, R2, -R0;\n"
- "DP4 R1.x, R1, c[7];\n"
- "MAD result.color, R1.x, R2, R0;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..6],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[1], 2D;\n"
- "MUL R0.zw, fragment.position.xyxy, c[6].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R0, c[4].y;\n"
- "ADD R1.x, -R1, c[7];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R3.xyz, R1.w, R2;\n"
- "MUL R2.xyz, R1, c[4].x;\n"
- "MUL R0.xyz, R0, c[5].z;\n"
- "MAD R2.xyz, R0.w, R2, R3;\n"
- "ADD R2.w, -R0, c[7].x;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "MAD R1.xyz, R2.w, R1, R2;\n"
- "ADD R2.x, -R1.w, c[7];\n"
- "MAD result.color.xyz, R2.x, R0, R1;\n"
- "MUL R0.x, R1.w, R0.w;\n"
- "MUL R0.z, R0.w, R2.x;\n"
- "MUL R0.y, R1.w, R2.w;\n"
- "DP3 result.color.w, R0, c[5];\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R1.x, R0, texture[1], 2D;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "ADD R1.x, -R1, c[5];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "ADD R2.x, -R0.w, c[5];\n"
- "MUL R2.xyz, R1, R2.x;\n"
- "MAD R1.xyz, R1, R0, R2;\n"
- "ADD R2.x, R1.w, R0.w;\n"
- "ADD R2.y, -R1.w, c[5].x;\n"
- "MAD result.color.xyz, R0, R2.y, R1;\n"
- "MAD result.color.w, -R1, R0, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "ADD R2, R1, R0;\n"
- "MAD result.color, -R1, R0, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R0.x, -R0, c[5];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "ADD R3.xyz, R1.w, -R1;\n"
- "ADD R2.xyz, R0.w, -R0;\n"
- "MUL R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MUL R2.xyz, R2, c[5].y;\n"
- "MAD R2.xyz, R1.w, R0.w, -R2;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R3.xyz, R1, R2.w;\n"
- "MUL R1.xyz, R1, R0;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R1.xyz, R1, c[5].y, R3;\n"
- "MAD R1.xyz, R0, R2.w, R1;\n"
- "MAD R2.xyz, R0, R2.w, R2;\n"
- "MUL R0.xyz, R0, c[5].y;\n"
- "ADD R2.w, R1, R0;\n"
- "ADD R2.xyz, R2, -R1;\n"
- "SGE R0.xyz, R0, R0.w;\n"
- "MAD result.color.xyz, R0, R2, R1;\n"
- "MAD result.color.w, -R1, R0, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, R1.w, R0.w;\n"
- "ADD R2.y, -R1.w, c[5].x;\n"
- "MAD result.color.xyz, R0, R2.y, R1;\n"
- "MAD result.color.w, -R1, R0, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MAX R2.xyz, R2, R3;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, R1.w, R0.w;\n"
- "ADD R2.y, -R1.w, c[5].x;\n"
- "MAD result.color.xyz, R0, R2.y, R1;\n"
- "MAD result.color.w, -R1, R0, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 1e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R0.x, -R0, c[5];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MAX R0.x, R1.w, c[5].y;\n"
- "RCP R0.x, R0.x;\n"
- "MAD R3.xyz, -R1, R0.x, c[5].x;\n"
- "MAX R3.xyz, R3, c[5].y;\n"
- "MUL R0.xy, fragment.position, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "ADD R2.x, -R1.w, c[5];\n"
- "MUL R2.xyz, R0, R2.x;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R0.xyz, R1.w, R0;\n"
- "RCP R3.x, R3.x;\n"
- "RCP R3.y, R3.y;\n"
- "RCP R3.z, R3.z;\n"
- "MAD R3.xyz, R0, R3, R2;\n"
- "MAD R0.xyz, R1, R0.w, R0;\n"
- "MAD R2.xyz, R1.w, R0.w, R2;\n"
- "MUL R2.w, R1, R0;\n"
- "ADD R1.x, R1.w, R0.w;\n"
- "ADD R2.xyz, R2, -R3;\n"
- "SGE R0.xyz, R0, R2.w;\n"
- "MAD result.color.xyz, R0, R2, R3;\n"
- "MAD result.color.w, -R1, R0, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 9.9999997e-006 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R2.xyz, -R1.w, R0.w, R3;\n"
- "MUL R4.xyz, R1.w, R2;\n"
- "MAX R2.xyz, R1, c[5].y;\n"
- "MUL R5.xyz, R1, R2.w;\n"
- "ADD R3.w, -R1, c[5].x;\n"
- "RCP R2.x, R2.x;\n"
- "RCP R2.y, R2.y;\n"
- "RCP R2.z, R2.z;\n"
- "MAD R2.xyz, R4, R2, R5;\n"
- "MUL R4.xyz, R0, R3.w;\n"
- "MAD R0.xyz, R0, R3.w, R2;\n"
- "MAD R1.xyz, R1, R2.w, R4;\n"
- "MUL R2.x, R1.w, R0.w;\n"
- "ADD R2.w, R1, R0;\n"
- "ADD R0.xyz, R0, -R1;\n"
- "SGE R2.xyz, R3, R2.x;\n"
- "MAD result.color.xyz, R2, R0, R1;\n"
- "MAD result.color.w, -R1, R0, R2;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R0.x, -R0, c[5];\n"
- "MUL R1, fragment.color.primary, R0.x;\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "ADD R3.xyz, R1.w, -R1;\n"
- "ADD R2.xyz, R0.w, -R0;\n"
- "MUL R2.xyz, R2, R3;\n"
- "MUL R2.xyz, R2, c[5].y;\n"
- "MAD R2.xyz, R1.w, R0.w, -R2;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "MUL R4.xyz, R1, R2.w;\n"
- "MUL R3.xyz, R1, R0;\n"
- "MUL R1.xyz, R1, c[5].y;\n"
- "ADD R2.w, -R1, c[5].x;\n"
- "MAD R3.xyz, R3, c[5].y, R4;\n"
- "MAD R3.xyz, R0, R2.w, R3;\n"
- "MAD R0.xyz, R0, R2.w, R2;\n"
- "ADD R2.x, R1.w, R0.w;\n"
- "ADD R0.xyz, R0, -R3;\n"
- "SGE R1.xyz, R1, R1.w;\n"
- "MAD result.color.xyz, R1, R0, R3;\n"
- "MAD result.color.w, -R1, R0, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[7] = { program.local[0..4],\n"
- " { 1, 2, 9.9999997e-006, 4 },\n"
- " { 16, 12, 3 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "TEMP R4;\n"
- "TEMP R5;\n"
- "TEMP R6;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R1.xyz, R0, c[3];\n"
- "RCP R1.z, R1.z;\n"
- "MUL R1.xy, R1, R1.z;\n"
- "MUL R1.xy, R1, c[0];\n"
- "TEX R1.x, R1, texture[1], 2D;\n"
- "MUL R0.xy, fragment.position, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "MAX R1.z, R0.w, c[5];\n"
- "RCP R1.z, R1.z;\n"
- "MUL R3.xyz, R0, R1.z;\n"
- "MAD R2.xyz, R3, c[6].x, -c[6].y;\n"
- "ADD R1.x, -R1, c[5];\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MAD R4.xyz, R3, R2, c[6].z;\n"
- "MAD R2.xyz, R1, c[5].y, -R1.w;\n"
- "MUL R5.xyz, R0.w, R2;\n"
- "MUL R6.xyz, R5, R4;\n"
- "RSQ R2.w, R3.x;\n"
- "RCP R4.x, R2.w;\n"
- "RSQ R2.w, R3.y;\n"
- "RSQ R3.w, R3.z;\n"
- "RCP R4.y, R2.w;\n"
- "RCP R4.z, R3.w;\n"
- "ADD R4.xyz, -R3, R4;\n"
- "MUL R6.xyz, R3, R6;\n"
- "MUL R4.xyz, R5, R4;\n"
- "ADD R3.xyz, -R3, c[5].x;\n"
- "MAD R2.xyz, R2, R3, R1.w;\n"
- "MUL R3.xyz, R1, c[5].y;\n"
- "MAD R5.xyz, R1.w, R0, R6;\n"
- "MAD R4.xyz, R1.w, R0, R4;\n"
- "ADD R6.xyz, R4, -R5;\n"
- "MUL R4.xyz, R0, c[5].w;\n"
- "SGE R4.xyz, R4, R0.w;\n"
- "MAD R4.xyz, R4, R6, R5;\n"
- "MAD R4.xyz, -R0, R2, R4;\n"
- "MUL R2.xyz, R0, R2;\n"
- "SGE R3.xyz, R3, R1.w;\n"
- "MAD R2.xyz, R3, R4, R2;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R2.xyz, R1, R2.w, R2;\n"
- "ADD R1.x, R1.w, R0.w;\n"
- "ADD R1.y, -R1.w, c[5].x;\n"
- "MAD result.color.xyz, R0, R1.y, R2;\n"
- "MAD result.color.w, -R1, R0, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R3.xyz, R1.w, R0;\n"
- "MUL R2.xyz, R1, R0.w;\n"
- "ADD R0.xyz, R1, R0;\n"
- "MIN R2.xyz, R2, R3;\n"
- "ADD R1.x, R1.w, R0.w;\n"
- "MAD result.color.xyz, -R2, c[5].y, R0;\n"
- "MAD result.color.w, -R1, R0, R1.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[6] = { program.local[0..4],\n"
- " { 1, 2 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "TEMP R2;\n"
- "TEMP R3;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[1], 2D;\n"
- "ADD R1.x, -R0, c[5];\n"
- "MUL R0.zw, fragment.position.xyxy, c[4].xyxy;\n"
- "TEX R0, R0.zwzw, texture[0], 2D;\n"
- "MUL R1, fragment.color.primary, R1.x;\n"
- "MUL R2.xyz, R1.w, R0;\n"
- "MAD R3.xyz, R1, R0.w, R2;\n"
- "MUL R2.xyz, R1, R0;\n"
- "MAD R2.xyz, -R2, c[5].y, R3;\n"
- "ADD R2.w, -R0, c[5].x;\n"
- "MAD R1.xyz, R1, R2.w, R2;\n"
- "ADD R2.x, R1.w, R0.w;\n"
- "ADD R2.y, -R1.w, c[5].x;\n"
- "MAD result.color.xyz, R0, R2.y, R1;\n"
- "MAD result.color.w, -R1, R0, R2.x;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK =
- "!!ARBfp1.0\n"
- "PARAM c[8] = { program.local[0..6],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "TEMP R1;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.zw, R0.xyxy, R0.z;\n"
- "MUL R0.zw, R0, c[0].xyxy;\n"
- "TEX R1.x, R0.zwzw, texture[1], 2D;\n"
- "ADD R0.xy, fragment.position, c[5];\n"
- "MUL R0.xy, R0, c[4];\n"
- "TEX R0, R0, texture[0], 2D;\n"
- "DP4 R1.y, R0, c[6];\n"
- "ADD R1.x, -R1, c[7];\n"
- "MUL R0, fragment.color.primary, R1.x;\n"
- "MUL result.color, R0, R1.y;\n"
- "END\n"
- ;
-
-static const char *FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK =
- "!!ARBfp1.0\n"
- "PARAM c[5] = { program.local[0..3],\n"
- " { 1 } };\n"
- "TEMP R0;\n"
- "MUL R0.xyz, fragment.position.y, c[2];\n"
- "MAD R0.xyz, fragment.position.x, c[1], R0;\n"
- "ADD R0.xyz, R0, c[3];\n"
- "RCP R0.z, R0.z;\n"
- "MUL R0.xy, R0, R0.z;\n"
- "MUL R0.xy, R0, c[0];\n"
- "TEX R0.x, R0, texture[0], 2D;\n"
- "ADD R0.x, -R0, c[4];\n"
- "MUL result.color, fragment.color.primary, R0.x;\n"
- "END\n"
- ;
-
-static const char *mask_fragment_program_sources[num_fragment_masks] = {
- FragmentProgram_FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA,
- FragmentProgram_FRAGMENT_PROGRAM_MASK_ELLIPSE_AA,
-};
-
-static const char *painter_fragment_program_sources[num_fragment_brushes][num_fragment_composition_modes] = {
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_SOLID_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_RADIAL_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_CONICAL_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_LINEAR_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_TEXTURE_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
- {
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SIMPLE_PORTER_DUFF_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_MULTIPLY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SCREEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_OVERLAY_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DARKEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_LIGHTEN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORDODGE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_COLORBURN_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_HARDLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_SOFTLIGHT_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_DIFFERENCE_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODES_EXCLUSION_NOMASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_MASK,
- FragmentProgram_FRAGMENT_PROGRAM_BRUSH_PATTERN_COMPOSITION_MODE_BLEND_MODE_NOMASK,
- },
-};
-
-static int painter_variable_locations[num_fragment_brushes][num_fragment_composition_modes][num_fragment_variables] = {
- {
- { -1, -1, -1, 2, -1, 0, 5, -1, 1, 3, 1, 0, -1, 4, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 3, -1, -1, 1, 1, 0, -1, 2, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, 0, -1, -1, 1, 2, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, 0, -1, -1, 2, -1, -1, -1, 0, -1, -1, 1, -1, -1, -1, -1, -1, },
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, },
- },
- {
- { -1, -1, 3, 7, 4, 5, 10, -1, 6, 8, 1, 0, 2, 9, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 8, -1, -1, 6, 1, 0, 2, 7, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, 5, -1, -1, 6, 7, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, 5, -1, 0, 1, -1, -1, 1, 0, 2, -1, },
- { -1, -1, 3, 5, 4, -1, 7, -1, -1, -1, 0, -1, 1, 6, -1, 1, 0, 2, -1, },
- { -1, -1, 3, -1, 4, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, 0, 2, -1, },
- },
- {
- { -1, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, 0, },
- { -1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, 0, },
- { -1, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 0, },
- },
- {
- { -1, 0, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, 2, 8, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, 2, 6, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, 1, -1, -1, -1, -1, 1, -1, },
- { -1, 0, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, 1, 5, -1, -1, -1, 1, -1, },
- { -1, 0, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, },
- },
- {
- { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, },
- { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, },
- },
- {
- { 2, -1, 2, 6, 3, 4, 9, -1, 5, 7, 1, 0, -1, 8, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 2, -1, 2, 4, 3, -1, 7, -1, -1, 5, 1, 0, -1, 6, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, 4, -1, -1, 5, 6, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, -1, 3, -1, -1, -1, -1, 4, -1, 0, -1, -1, 0, -1, -1, 1, -1, },
- { 1, -1, 2, 4, 3, -1, 6, -1, -1, -1, 0, -1, -1, 5, 0, -1, -1, 1, -1, },
- { 0, -1, 2, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, },
- },
-};
-
-static int mask_variable_locations[num_fragment_masks][num_fragment_variables] = {
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, },
- { -1, -1, 1, -1, 2, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, },
-};
-
-#endif
diff --git a/src/opengl/util/generator.cpp b/src/opengl/util/generator.cpp
deleted file mode 100644
index 3d12446842..0000000000
--- a/src/opengl/util/generator.cpp
+++ /dev/null
@@ -1,500 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtOpenGL module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QFile>
-#include <QList>
-#include <QMap>
-#include <QPair>
-#include <QSet>
-#include <QString>
-#include <QTextStream>
-
-#include <QtDebug>
-#include <cstdlib>
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-#define TAB " "
-
-typedef QPair<QString, QString> QStringPair;
-
-QString readSourceFile(const QString &sourceFile, bool fragmentProgram = false)
-{
- QFile file(sourceFile);
-
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
- qDebug() << "Missing source file" << sourceFile;
- exit(0);
- }
-
- QString source;
-
- QTextStream in(&file);
- while (!in.atEnd()) {
- QString line = in.readLine();
-
- if (fragmentProgram && line[0] == '#' && !line.startsWith("#var"))
- continue;
-
- if (fragmentProgram)
- source.append(" \"");
-
- source.append(line);
-
- if (fragmentProgram)
- source.append("\\n\"");
-
- source.append('\n');
- }
-
- if (fragmentProgram)
- source.append(" ;\n");
-
- return source;
-}
-
-QList<QStringPair> readConf(const QString &confFile)
-{
- QFile file(confFile);
-
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
- qDebug() << "Missing file" << confFile;
- exit(0);
- }
-
- QList<QStringPair> result;
-
- QTextStream in(&file);
- while (!in.atEnd()) {
- QString line = in.readLine();
-
- if (line.startsWith('#'))
- continue;
-
- QTextStream lineStream(&line);
-
- QString enumerator;
- QString sourceFile;
-
- lineStream >> enumerator;
-
- if (lineStream.atEnd()) {
- qDebug() << "Error in file" << confFile << '(' << enumerator << ')';
- exit(0);
- }
-
- lineStream >> sourceFile;
-
- result << QStringPair(enumerator, readSourceFile(sourceFile));
- }
-
- return result;
-}
-
-QString compileSource(const QString &source)
-{
- {
- QFile tempSourceFile("__tmp__.glsl");
- if (!tempSourceFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- qDebug() << "Failed opening __tmp__.glsl";
- exit(0);
- }
-
- QTextStream out(&tempSourceFile);
- out << source;
- }
-
- if (std::system("cgc -quiet -oglsl -profile arbfp1 __tmp__.glsl >__tmp__.frag") == -1) {
- qDebug() << "Failed running cgc";
- exit(0);
- }
-
- return readSourceFile("__tmp__.frag", true);
-}
-
-QString getWord(QString line, int word)
-{
- QTextStream in(&line);
-
- QString result;
-
- for (int i = 0; i < word; ++i)
- in >> result;
-
- return result;
-}
-
-static int toInt(const QByteArray &str)
-{
- int value = 0;
-
- for (int i = 0; i < str.size(); ++i) {
- if (str[i] < '0' || str[i] > '9')
- break;
-
- value *= 10;
- value += (str[i] - '0');
- }
-
- return value;
-}
-QList<int> getLocations(const QSet<QString> &variables, QString source)
-{
- QTextStream in(&source);
-
- QMap<QString, int> locations;
-
- foreach (QString variable, variables)
- locations[variable] = -1;
-
- while (!in.atEnd()) {
- QString line = in.readLine().trimmed();
-
- line = line.right(line.size() - 1);
-
- if (line.startsWith("#var")) {
- QByteArray temp;
- QByteArray name;
-
- QTextStream lineStream(&line);
-
- lineStream >> temp >> temp >> name;
-
- int location = -1;
-
- while (!lineStream.atEnd()) {
- lineStream >> temp;
-
- if (temp.startsWith("c[")) {
- location = toInt(temp.right(temp.size() - 2));
- break;
- }
-
- if (temp == "texunit") {
- lineStream >> temp;
- location = toInt(temp);
- break;
- }
- }
-
- locations[name] = location;
- }
- }
-
- QList<int> result;
-
- foreach (QString variable, variables)
- result << locations[variable];
-
- return result;
-}
-
-// remove #var statements
-QString trimmed(QString source)
-{
- QTextStream in(&source);
-
- QString result;
-
- while (!in.atEnd()) {
- QString line = in.readLine();
- if (!line.trimmed().startsWith("\"#"))
- result += line + '\n';
- }
-
- return result;
-}
-
-void writeVariablesEnum(QTextStream &out, const char *name, const QSet<QString> &s)
-{
- out << "enum " << name << " {";
- QSet<QString>::const_iterator it = s.begin();
- if (it != s.end()) {
- out << "\n" TAB "VAR_" << it->toUpper();
- for (++it; it != s.end(); ++it)
- out << ",\n" TAB "VAR_" << it->toUpper();
- }
- out << "\n};\n\n";
-}
-
-void writeTypesEnum(QTextStream &out, const char *name, const QList<QStringPair> &s)
-{
- out << "enum " << name << " {";
- QList<QStringPair>::const_iterator it = s.begin();
- if (it != s.end()) {
- out << "\n" TAB << it->first;
- for (++it; it != s.end(); ++it)
- out << ",\n" TAB << it->first;
- }
- out << "\n};\n\n";
-}
-
-void writeIncludeFile(const QSet<QString> &variables,
- const QList<QStringPair> &brushes,
- const QList<QStringPair> &compositionModes,
- const QList<QStringPair> &masks,
- const QMap<QString, QMap<QString, QString> > &compiled)
-{
- QFile includeFile("fragmentprograms_p.h");
- if (!includeFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- qDebug() << "Failed opening fragmentprograms_p.h";
- exit(0);
- }
-
- QTextStream out(&includeFile);
-
- QLatin1String tab(TAB);
-
- out << "/****************************************************************************\n"
- "**\n"
- "** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).\n"
- "** All rights reserved.\n"
- "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
- "**\n"
- "** This file is part of the QtOpenGL module of the Qt Toolkit.\n"
- "**\n"
- "** $QT_BEGIN_LICENSE:LGPL$\n"
- "** GNU Lesser General Public License Usage\n"
- "** This file may be used under the terms of the GNU Lesser General Public\n"
- "** License version 2.1 as published by the Free Software Foundation and\n"
- "** appearing in the file LICENSE.LGPL included in the packaging of this\n"
- "** file. Please review the following information to ensure the GNU Lesser\n"
- "** General Public License version 2.1 requirements will be met:\n"
- "** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n"
- "**\n"
- "** In addition, as a special exception, Nokia gives you certain additional\n"
- "** rights. These rights are described in the Nokia Qt LGPL Exception\n"
- "** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n"
- "**\n"
- "** GNU General Public License Usage\n"
- "** Alternatively, this file may be used under the terms of the GNU General\n"
- "** Public License version 3.0 as published by the Free Software Foundation\n"
- "** and appearing in the file LICENSE.GPL included in the packaging of this\n"
- "** file. Please review the following information to ensure the GNU General\n"
- "** Public License version 3.0 requirements will be met:\n"
- "** http://www.gnu.org/copyleft/gpl.html.\n"
- "**\n"
- "** Other Usage\n"
- "** Alternatively, this file may be used in accordance with the terms and\n"
- "** conditions contained in a signed written agreement between you and Nokia.\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "** $QT_END_LICENSE$\n"
- "**\n"
- "****************************************************************************/\n"
- "\n"
- "#ifndef FRAGMENTPROGRAMS_P_H\n"
- "#define FRAGMENTPROGRAMS_P_H\n"
- "\n"
- "//\n"
- "// W A R N I N G\n"
- "// -------------\n"
- "//\n"
- "// This file is not part of the Qt API. It exists purely as an\n"
- "// implementation detail. This header file may change from version to\n"
- "// version without notice, or even be removed.\n"
- "//\n"
- "// We mean it.\n"
- "//\n"
- "\n";
-
- writeVariablesEnum(out, "FragmentVariable", variables);
- writeTypesEnum(out, "FragmentBrushType", brushes);
- writeTypesEnum(out, "FragmentCompositionModeType", compositionModes);
- writeTypesEnum(out, "FragmentMaskType", masks);
-
- out << "static const unsigned int num_fragment_variables = " << variables.size() << ";\n\n";
- out << "static const unsigned int num_fragment_brushes = " << brushes.size() << ";\n";
- out << "static const unsigned int num_fragment_composition_modes = " << compositionModes.size() << ";\n";
- out << "static const unsigned int num_fragment_masks = " << masks.size() << ";\n\n";
-
- foreach (QStringPair mask, masks) {
- const QString compiledSource = compiled[mask.first]["MASK__"];
-
- out << "static const char *FragmentProgram_" << mask.first << " =\n"
- << trimmed(compiledSource)
- << '\n';
- }
-
- foreach (QStringPair brush, brushes) {
- foreach (QStringPair mode, compositionModes) {
- const QString compiledSource = compiled[brush.first][mode.first];
-
- out << "static const char *FragmentProgram_" << brush.first << '_' << mode.first << " =\n"
- << trimmed(compiledSource)
- << '\n';
- }
- }
-
- out << "static const char *mask_fragment_program_sources[num_fragment_masks] = {\n";
- foreach (QStringPair mask, masks)
- out << tab << "FragmentProgram_" << mask.first << ",\n";
- out << "};\n\n";
-
- out << "static const char *painter_fragment_program_sources[num_fragment_brushes][num_fragment_composition_modes] = {\n";
- foreach (QStringPair brush, brushes) {
- out << tab << "{\n";
-
- foreach (QStringPair mode, compositionModes)
- out << tab << tab << "FragmentProgram_" << brush.first << '_' << mode.first << ",\n";
-
- out << tab << "},\n";
- }
- out << "};\n\n";
-
- out << "static int painter_variable_locations[num_fragment_brushes][num_fragment_composition_modes][num_fragment_variables] = {\n";
- foreach (QStringPair brush, brushes) {
- out << tab << "{\n";
-
- foreach (QStringPair mode, compositionModes) {
- out << tab << tab << "{ ";
-
- QList<int> locations = getLocations(variables, compiled[brush.first][mode.first]);
-
- foreach (int location, locations)
- out << location << ", ";
-
- out << "},\n";
- }
-
- out << tab << "},\n";
- }
- out << "};\n\n";
-
- out << "static int mask_variable_locations[num_fragment_masks][num_fragment_variables] = {\n";
- foreach (QStringPair mask, masks) {
- out << tab << "{ ";
-
- QList<int> locations = getLocations(variables, compiled[mask.first]["MASK__"]);
-
- foreach (int location, locations)
- out << location << ", ";
-
- out << "},\n";
- }
- out << "};\n\n";
- out << "#endif\n";
-}
-
-QList<QString> getVariables(QString program)
-{
- QList<QString> result;
-
- QTextStream in(&program);
- while (!in.atEnd()) {
- QString line = in.readLine();
-
- if (line.startsWith("uniform")) {
- QString word = getWord(line, 3);
- result << word.left(word.size() - 1);
- } else if (line.startsWith("#include")) {
- QString file = getWord(line, 2);
- result << getVariables(readSourceFile(file.mid(1, file.size() - 2)));
- }
- }
-
- return result;
-}
-
-int main()
-{
- QList<QStringPair> brushes = readConf(QLatin1String("brushes.conf"));
- QList<QStringPair> compositionModes = readConf(QLatin1String("composition_modes.conf"));
- QList<QStringPair> masks = readConf(QLatin1String("masks.conf"));
-
- QString painterSource = readSourceFile("painter.glsl");
- QString painterNoMaskSource = readSourceFile("painter_nomask.glsl");
- QString fastPainterSource = readSourceFile("fast_painter.glsl");
- QString brushPainterSource = readSourceFile("brush_painter.glsl");
-
- QSet<QString> variables;
-
- QList<QStringPair> programs[3] = { brushes, compositionModes, masks };
-
- for (int i = 0; i < 3; ++i)
- foreach (QStringPair value, programs[i])
- variables += QSet<QString>::fromList(getVariables(value.second));
-
- variables += QSet<QString>::fromList(getVariables(painterSource));
- variables += QSet<QString>::fromList(getVariables(fastPainterSource));
-
- QMap<QString, QMap<QString, QString> > compiled;
-
- foreach (QStringPair brush, brushes) {
- foreach (QStringPair mode, compositionModes) {
- QString combinedSource = brush.second + mode.second + painterSource;
- compiled[brush.first][mode.first] = compileSource(combinedSource);
-
- combinedSource = brush.second + mode.second + painterNoMaskSource;
- compiled[brush.first][mode.first + "_NOMASK"] = compileSource(combinedSource);
- }
-
- QString fastSource = brush.second + fastPainterSource;
- QString brushSource = brush.second + brushPainterSource;
-
- compiled[brush.first]["COMPOSITION_MODE_BLEND_MODE_MASK"] = compileSource(fastSource);
- compiled[brush.first]["COMPOSITION_MODE_BLEND_MODE_NOMASK"] = compileSource(brushSource);
- }
-
- QList<QStringPair> temp;
-
- foreach (QStringPair mode, compositionModes)
- temp << QStringPair(mode.first + "_NOMASK", mode.second);
-
- compositionModes += temp;
-
- compositionModes << QStringPair("COMPOSITION_MODE_BLEND_MODE_MASK", "")
- << QStringPair("COMPOSITION_MODE_BLEND_MODE_NOMASK", "");
-
- foreach (QStringPair mask, masks)
- compiled[mask.first]["MASK__"] = compileSource(mask.second);
-
- writeIncludeFile(variables, brushes, compositionModes, masks, compiled);
-
- return 0;
-}
-
-QT_END_NAMESPACE
diff --git a/src/opengl/util/generator.pro b/src/opengl/util/generator.pro
deleted file mode 100644
index ac71934ecf..0000000000
--- a/src/opengl/util/generator.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-######################################################################
-# Automatically generated by qmake (2.01a) Thu Oct 19 11:03:24 2006
-######################################################################
-
-TEMPLATE = app
-TARGET = generator
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += generator.cpp
-
-CONFIG += console
diff --git a/src/opengl/util/glsl_to_include.sh b/src/opengl/util/glsl_to_include.sh
deleted file mode 100755
index c97239bfdd..0000000000
--- a/src/opengl/util/glsl_to_include.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#! /bin/sh
-#############################################################################
-##
-## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is the build configuration utility of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## GNU Lesser General Public License Usage
-## This file may be used under the terms of the GNU Lesser General Public
-## License version 2.1 as published by the Free Software Foundation and
-## appearing in the file LICENSE.LGPL included in the packaging of this
-## file. Please review the following information to ensure the GNU Lesser
-## General Public License version 2.1 requirements will be met:
-## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU General
-## Public License version 3.0 as published by the Free Software Foundation
-## and appearing in the file LICENSE.GPL included in the packaging of this
-## file. Please review the following information to ensure the GNU General
-## Public License version 3.0 requirements will be met:
-## http://www.gnu.org/copyleft/gpl.html.
-##
-## Other Usage
-## Alternatively, this file may be used in accordance with the terms and
-## conditions contained in a signed written agreement between you and Nokia.
-##
-##
-##
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-# Compile a .glsl file to a file that can be included in a C++ program
-USAGE="Usage: $0 <file.glsl>"
-CGC=cgc
-CGC_PROFILE=arbfp1
-
-if test $# -ne 1
-then
- echo $USAGE
- exit 1
-fi
-
-GLSL_FILE=$1
-FRAG_FILE=`basename $1 .glsl`.frag
-#GLSL_INC_FILE=`basename $1 .glsl`.glsl_quoted
-
-echo "// Generated by src/opengl/util/$0 from $1" > $FRAG_FILE
-$CGC -quiet -oglsl -profile $CGC_PROFILE $GLSL_FILE | while read line
-do
- if test `echo $line | cut -c1` != "#"
- then
- echo -e \"$line\" >> $FRAG_FILE
- fi
-done
-echo "; // Generated by src/opengl/util/$0 from $1" >> $FRAG_FILE
-
-#echo "// Generated by src/opengl/util/$0 from $1" > $GLSL_INC_FILE
-#cat $GLSL_FILE | while read line
-#do
-# printf \"%s\\\\n\"\\n "$line" >> $GLSL_INC_FILE
-#done
-#echo "; // Generated by src/opengl/util/$0 from $1" >> $GLSL_INC_FILE
diff --git a/src/opengl/util/linear_brush.glsl b/src/opengl/util/linear_brush.glsl
deleted file mode 100644
index 90a4440a99..0000000000
--- a/src/opengl/util/linear_brush.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-uniform sampler1D palette;
-uniform vec3 linear;
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-vec4 brush()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1);
- vec2 A = hcoords.xy / hcoords.z;
-
- float val = dot(linear.xy, A) * linear.z;
-
- return texture1D(palette, val);
-}
-
diff --git a/src/opengl/util/masks.conf b/src/opengl/util/masks.conf
deleted file mode 100644
index d853d0b6e9..0000000000
--- a/src/opengl/util/masks.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA trap_exact_aa.glsl
-FRAGMENT_PROGRAM_MASK_ELLIPSE_AA ellipse_aa.glsl
diff --git a/src/opengl/util/meego/main.cpp b/src/opengl/util/meego/main.cpp
deleted file mode 100644
index 21ac5fd629..0000000000
--- a/src/opengl/util/meego/main.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtOpenGL module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtCore/qdebug.h>
-
-#define QT_DEBUG_SHADER_CACHE
-#define QT_MEEGO_EXPERIMENTAL_SHADERCACHE
-#define QT_OPENGL_ES_2
-#define QT_BOOTSTRAPPED
-
-typedef int GLsizei;
-typedef unsigned int GLenum;
-
-#include "../../gl2paintengineex/qglshadercache_meego_p.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int main()
-{
- ShaderCacheSharedMemory shm;
-
- if (!shm.isAttached()) {
- fprintf(stderr, "Unable to attach to shared memory\n");
- return EXIT_FAILURE;
- }
-
- ShaderCacheLocker locker(&shm);
- if (!locker.isLocked()) {
- fprintf(stderr, "Unable to lock shared memory\n");
- return EXIT_FAILURE;
- }
-
- void *data = shm.data();
- Q_ASSERT(data);
-
- CachedShaders *cache = reinterpret_cast<CachedShaders *>(data);
-
- for (int i = 0; i < cache->shaderCount; ++i) {
- printf("Shader %d: %d bytes\n", i, cache->headers[i].size);
- }
-
- printf("\nSummary:\n\n"
- " Amount of cached shaders: %d\n"
- " Bytes used: %d\n"
- " Bytes available: %d\n",
- cache->shaderCount, cache->dataSize, cache->availableSize());
-
- return EXIT_SUCCESS;
-}
-
diff --git a/src/opengl/util/meego/shader-cache-introspector.pro b/src/opengl/util/meego/shader-cache-introspector.pro
deleted file mode 100644
index 520e9a5108..0000000000
--- a/src/opengl/util/meego/shader-cache-introspector.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-TEMPLATE = app
-
-SOURCES += main.cpp
-
-TARGET = shader-cache-introspector
-
-QT = core
diff --git a/src/opengl/util/painter.glsl b/src/opengl/util/painter.glsl
deleted file mode 100644
index b990234778..0000000000
--- a/src/opengl/util/painter.glsl
+++ /dev/null
@@ -1,21 +0,0 @@
-uniform sampler2D dst_texture;
-uniform sampler2D mask_texture;
-uniform vec2 inv_mask_size;
-uniform vec2 inv_dst_size;
-uniform vec2 mask_offset;
-uniform vec4 mask_channel;
-
-float mask()
-{
- return dot(mask_channel, texture2D(mask_texture, (gl_FragCoord.xy + mask_offset) * inv_mask_size));
-}
-
-void main()
-{
- vec4 dst = texture2D(dst_texture, gl_FragCoord.xy * inv_dst_size);
-
- // combine clip and coverage channels
- float mask_alpha = mask();
-
- gl_FragColor = mix(dst, composite(brush(), dst), mask_alpha);
-}
diff --git a/src/opengl/util/painter_nomask.glsl b/src/opengl/util/painter_nomask.glsl
deleted file mode 100644
index af5ad6505f..0000000000
--- a/src/opengl/util/painter_nomask.glsl
+++ /dev/null
@@ -1,9 +0,0 @@
-uniform sampler2D dst_texture;
-uniform vec2 inv_dst_size;
-
-void main()
-{
- vec4 dst = texture2D(dst_texture, gl_FragCoord.xy * inv_dst_size);
-
- gl_FragColor = composite(brush(), dst);
-}
diff --git a/src/opengl/util/pattern_brush.glsl b/src/opengl/util/pattern_brush.glsl
deleted file mode 100644
index 31702b887c..0000000000
--- a/src/opengl/util/pattern_brush.glsl
+++ /dev/null
@@ -1,23 +0,0 @@
-uniform sampler2D brush_texture;
-uniform vec2 inv_brush_texture_size;
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-vec4 brush()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1);
- vec2 coords = hcoords.xy / hcoords.z;
-
- coords *= inv_brush_texture_size;
-
- float alpha = 1.0 - texture2D(brush_texture, coords).r;
-
- return gl_Color * alpha;
-}
diff --git a/src/opengl/util/radial_brush.glsl b/src/opengl/util/radial_brush.glsl
deleted file mode 100644
index 84bec62e65..0000000000
--- a/src/opengl/util/radial_brush.glsl
+++ /dev/null
@@ -1,28 +0,0 @@
-uniform sampler1D palette;
-uniform vec2 fmp;
-uniform float fmp2_m_radius2;
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-vec4 brush()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1);
- vec2 A = hcoords.xy / hcoords.z;
- vec2 B = fmp;
-
- float a = fmp2_m_radius2;
- float b = 2.0*dot(A, B);
- float c = -dot(A, A);
-
- float val = (-b + sqrt(b*b - 4.0*a*c)) / (2.0*a);
-
- return texture1D(palette, val);
-}
-
diff --git a/src/opengl/util/simple_porter_duff.glsl b/src/opengl/util/simple_porter_duff.glsl
deleted file mode 100644
index 4cb0599ac5..0000000000
--- a/src/opengl/util/simple_porter_duff.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-uniform vec2 porterduff_ab;
-uniform vec3 porterduff_xyz;
-
-vec4 composite(vec4 src, vec4 dst)
-{
- vec4 result;
-
- result.xyz = porterduff_ab.x * src.xyz * dst.a
- + porterduff_ab.y * dst.xyz * src.a
- + porterduff_xyz.y * src.xyz * (1.0 - dst.a)
- + porterduff_xyz.z * dst.xyz * (1.0 - src.a);
-
- result.a = dot(porterduff_xyz, vec3(src.a * dst.a, src.a * (1.0 - dst.a), dst.a * (1.0 - src.a)));
-
- return result;
-}
diff --git a/src/opengl/util/solid_brush.glsl b/src/opengl/util/solid_brush.glsl
deleted file mode 100644
index 760afd1a72..0000000000
--- a/src/opengl/util/solid_brush.glsl
+++ /dev/null
@@ -1,4 +0,0 @@
-vec4 brush()
-{
- return gl_Color;
-}
diff --git a/src/opengl/util/texture_brush.glsl b/src/opengl/util/texture_brush.glsl
deleted file mode 100644
index 949825583f..0000000000
--- a/src/opengl/util/texture_brush.glsl
+++ /dev/null
@@ -1,21 +0,0 @@
-uniform sampler2D brush_texture;
-uniform vec2 inv_brush_texture_size;
-uniform vec3 inv_matrix_m0;
-uniform vec3 inv_matrix_m1;
-uniform vec3 inv_matrix_m2;
-
-vec4 brush()
-{
- mat3 mat;
-
- mat[0] = inv_matrix_m0;
- mat[1] = inv_matrix_m1;
- mat[2] = inv_matrix_m2;
-
- vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1);
- vec2 coords = hcoords.xy / hcoords.z;
-
- coords *= inv_brush_texture_size;
-
- return texture2D(brush_texture, coords);
-}
diff --git a/src/opengl/util/trap_exact_aa.glsl b/src/opengl/util/trap_exact_aa.glsl
deleted file mode 100644
index 1637f430b5..0000000000
--- a/src/opengl/util/trap_exact_aa.glsl
+++ /dev/null
@@ -1,58 +0,0 @@
-float quad_aa()
-{
- float top = min(gl_FragCoord.y + 0.5, gl_TexCoord[0].x);
- float bottom = max(gl_FragCoord.y - 0.5, gl_TexCoord[0].y);
-
- float area = top - bottom;
-
- float left = gl_FragCoord.x - 0.5;
- float right = gl_FragCoord.x + 0.5;
-
- // use line equations to compute intersections of left/right edges with top/bottom of truncated pixel
- vec4 vecX = gl_TexCoord[1].xxzz * vec2(top, bottom).xyxy + gl_TexCoord[1].yyww;
-
- vec2 invA = gl_TexCoord[0].zw;
-
- // transform right line to left to be able to use same calculations for both
- vecX.zw = 2.0 * gl_FragCoord.x - vecX.zw;
-
- vec2 topX = vec2(vecX.x, vecX.z);
- vec2 bottomX = vec2(vecX.y, vecX.w);
-
- // transform lines such that top intersection is to the right of bottom intersection
- vec2 topXTemp = max(topX, bottomX);
- vec2 bottomXTemp = min(topX, bottomX);
-
- // make sure line slope reflects mirrored lines
- invA = mix(invA, -invA, step(topX, bottomX));
-
- vec2 vecLeftRight = vec2(left, right);
-
- // compute the intersections of the lines with the left and right edges of the pixel
- vec4 intersectY = bottom + (vecLeftRight.xyxy - bottomXTemp.xxyy) * invA.xxyy;
-
- vec2 temp = mix(area - 0.5 * (right - bottomXTemp) * (intersectY.yw - bottom), // left < bottom < right < top
- (0.5 * (topXTemp + bottomXTemp) - left) * area, // left < bottom < top < right
- step(topXTemp, right.xx));
-
- vec2 excluded = 0.5 * (top - intersectY.xz) * (topXTemp - left); // bottom < left < top < right
-
- excluded = mix((top - 0.5 * (intersectY.yw + intersectY.xz)) * (right - left), // bottom < left < right < top
- excluded, step(topXTemp, right.xx));
-
- excluded = mix(temp, // left < bottom < right (see calculation of temp)
- excluded, step(bottomXTemp, left.xx));
-
- excluded = mix(vec2(area, area), // right < bottom < top
- excluded, step(bottomXTemp, right.xx));
-
- excluded *= step(left, topXTemp);
-
- return (area - excluded.x - excluded.y) * step(bottom, top);
-}
-
-void main()
-{
- gl_FragColor = quad_aa().xxxx;
-}
-