Browse Source

Rework things a bit; Start documentation

gh-pages
falkTX 9 years ago
parent
commit
3b78c6dfd8
54 changed files with 355 additions and 8208 deletions
  1. +36
    -0
      dgl/App.hpp
  2. +18
    -9
      dgl/Base.hpp
  3. +278
    -1
      dgl/Geometry.hpp
  4. +3
    -0
      dgl/src/AppPrivateData.hpp
  5. +4
    -4
      distrho/DistrhoUtils.hpp
  6. +4
    -6
      distrho/src/DistrhoDefines.h
  7. +11
    -16
      examples/Makefile
  8. +0
    -17
      examples/app-bundle/nekobi-ui.pro
  9. +0
    -0
      examples/dgl-app.cpp
  10. +0
    -0
      examples/dgl-color.cpp
  11. +1
    -1
      examples/dgl-images.cpp
  12. +0
    -0
      examples/dgl-images_src/CREDITS.txt
  13. +0
    -0
      examples/dgl-images_src/CatPics.cpp
  14. +0
    -0
      examples/dgl-images_src/CatPics.hpp
  15. +0
    -0
      examples/dgl-images_src/cat1.png
  16. +0
    -0
      examples/dgl-images_src/cat2.png
  17. +0
    -0
      examples/dgl-images_src/cat3.png
  18. +0
    -54
      examples/nekobi-ui.cpp
  19. +0
    -6890
      examples/nekobi-ui_src/DistrhoArtworkNekobi.cpp
  20. +0
    -90
      examples/nekobi-ui_src/DistrhoArtworkNekobi.hpp
  21. +0
    -142
      examples/nekobi-ui_src/DistrhoUINekobi.cpp
  22. +0
    -81
      examples/nekobi-ui_src/DistrhoUINekobi.hpp
  23. +0
    -204
      examples/nekobi-ui_src/NekoWidget.hpp
  24. BIN
      examples/nekobi-ui_src/artwork/about.png
  25. BIN
      examples/nekobi-ui_src/artwork/aboutButtonHover.png
  26. BIN
      examples/nekobi-ui_src/artwork/aboutButtonNormal.png
  27. BIN
      examples/nekobi-ui_src/artwork/background.png
  28. BIN
      examples/nekobi-ui_src/artwork/claw1.png
  29. BIN
      examples/nekobi-ui_src/artwork/claw2.png
  30. BIN
      examples/nekobi-ui_src/artwork/knob.png
  31. BIN
      examples/nekobi-ui_src/artwork/run1.png
  32. BIN
      examples/nekobi-ui_src/artwork/run2.png
  33. BIN
      examples/nekobi-ui_src/artwork/run3.png
  34. BIN
      examples/nekobi-ui_src/artwork/run4.png
  35. BIN
      examples/nekobi-ui_src/artwork/scratch1.png
  36. BIN
      examples/nekobi-ui_src/artwork/scratch2.png
  37. BIN
      examples/nekobi-ui_src/artwork/sit.png
  38. BIN
      examples/nekobi-ui_src/artwork/slider.png
  39. BIN
      examples/nekobi-ui_src/artwork/tail.png
  40. +0
    -36
      examples/shaders/cube.frag
  41. +0
    -45
      examples/shaders/cube.vert
  42. +0
    -43
      examples/shaders/distance-field-2.frag
  43. +0
    -47
      examples/shaders/distance-field-2.vert
  44. +0
    -43
      examples/shaders/distance-field-3.frag
  45. +0
    -70
      examples/shaders/distance-field.frag
  46. +0
    -40
      examples/shaders/distance-field.vert
  47. +0
    -152
      examples/shaders/text.frag
  48. +0
    -55
      examples/shaders/text.vert
  49. +0
    -36
      examples/shaders/v3f-c4f.frag
  50. +0
    -43
      examples/shaders/v3f-c4f.vert
  51. +0
    -38
      examples/shaders/v3f-t2f-c4f.frag
  52. +0
    -45
      examples/shaders/v3f-t2f-c4f.vert
  53. +0
    -0
      examples/tests/cairo.cpp
  54. +0
    -0
      examples/tests/text.cpp

+ 36
- 0
dgl/App.hpp View File

@@ -25,15 +25,51 @@ class Window;

// -----------------------------------------------------------------------

/**
Base DGL Application class.

One application instance is required for creating a window.
There's no single/global application instance in DGL, and multiple
windows can share the same app instance.

In standalone mode an application will automatically quit its
event-loop when all its windows are closed.
*/
class App
{
public:
/**
Constructor.
*/
App();

/**
Destructor.
*/
~App();

/**
Idle function.
This calls all this app Windows' idle functions and idle callbacks.
*/
void idle();

/**
Run the application event-loop until all Windows are closed.
@idle() is called at regular intervals.
*/
void exec();

/**
Quit the application.
This stops the event-loop and closes all Windows.
*/
void quit();

/**
Check if the application is about to quit.
Returning true means there's no event-loop running at the moment.
*/
bool isQuiting() const noexcept;

private:


+ 18
- 9
dgl/Base.hpp View File

@@ -20,8 +20,8 @@
#include "../distrho/extra/d_leakdetector.hpp"

// -----------------------------------------------------------------------
// Define namespace

/* Define namespace */
#ifndef DGL_NAMESPACE
# define DGL_NAMESPACE DGL
#endif
@@ -30,14 +30,18 @@
#define END_NAMESPACE_DGL }
#define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE;

/* GL includes */
// -----------------------------------------------------------------------
// OpenGL includes

#ifdef DISTRHO_OS_MAC
# include "OpenGL/gl.h"
#else
# include "GL/gl.h"
#endif

/* missing GL defines */
// -----------------------------------------------------------------------
// Missing OpenGL defines

#if defined(GL_BGR_EXT) && ! defined(GL_BGR)
# define GL_BGR GL_BGR_EXT
#endif
@@ -53,9 +57,10 @@
START_NAMESPACE_DGL

// -----------------------------------------------------------------------
// Base DGL enums

/*
* Convenience symbols for ASCII control characters.
/**
Convenience symbols for ASCII control characters.
*/
enum Char {
CHAR_BACKSPACE = 0x08,
@@ -63,8 +68,8 @@ enum Char {
CHAR_DELETE = 0x7F
};

/*
* Special (non-Unicode) keyboard keys.
/**
Special (non-Unicode) keyboard keys.
*/
enum Key {
KEY_F1 = 1,
@@ -94,8 +99,8 @@ enum Key {
KEY_SUPER
};

/*
* Keyboard modifier flags.
/**
Keyboard modifier flags.
*/
enum Modifier {
MODIFIER_SHIFT = 1 << 0, /**< Shift key */
@@ -105,7 +110,11 @@ enum Modifier {
};

// -----------------------------------------------------------------------
// Base DGL classes

/**
Idle callback.
*/
class IdleCallback
{
public:


+ 278
- 1
dgl/Geometry.hpp View File

@@ -22,29 +22,71 @@
START_NAMESPACE_DGL

// -----------------------------------------------------------------------
// Forward class names

template<typename> class Line;
template<typename> class Rectangle;

// -----------------------------------------------------------------------
// Point

template<typename T>
class Point
{
public:
/**
Constructor for (0, 0) point.
*/
Point() noexcept;

/**
Constructor using custom x and y values.
*/
Point(const T& x, const T& y) noexcept;

/**
Constructor using another Point class values.
*/
Point(const Point<T>& pos) noexcept;

/**
Get X value.
*/
const T& getX() const noexcept;

/**
Get Y value.
*/
const T& getY() const noexcept;

/**
Set X value as @a x.
*/
void setX(const T& x) noexcept;

/**
Set Y value as @a y.
*/
void setY(const T& y) noexcept;

/**
Set X and Y values as @a x and @a y respectively.
*/
void setPos(const T& x, const T& y) noexcept;

/**
Set X and Y values according to @a pos.
*/
void setPos(const Point<T>& pos) noexcept;

/**
Move this point by @a x and @a y values.
*/
void moveBy(const T& x, const T& y) noexcept;

/**
Move this point by @a pos.
*/
void moveBy(const Point<T>& pos) noexcept;

Point<T>& operator=(const Point<T>& pos) noexcept;
@@ -60,24 +102,65 @@ private:
};

// -----------------------------------------------------------------------
// Size

template<typename T>
class Size
{
public:
/**
Constructor for null size (0x0).
*/
Size() noexcept;

/**
Constructor using custom width and height values.
*/
Size(const T& width, const T& height) noexcept;

/**
Constructor using another Size class values.
*/
Size(const Size<T>& size) noexcept;

/**
Get width.
*/
const T& getWidth() const noexcept;

/**
Get height.
*/
const T& getHeight() const noexcept;

/**
Set width.
*/
void setWidth(const T& width) noexcept;

/**
Set height.
*/
void setHeight(const T& height) noexcept;

/**
Set size using @a width and @a height.
*/
void setSize(const T& width, const T& height) noexcept;

/**
Set size.
*/
void setSize(const Size<T>& size) noexcept;

/**
Grow size by @a multiplier.
*/
void growBy(const T& multiplier) noexcept;

/**
Shrink size by @a divider.
*/
void shrinkBy(const T& divider) noexcept;

Size<T>& operator=(const Size<T>& size) noexcept;
@@ -94,39 +177,125 @@ private:
};

// -----------------------------------------------------------------------
// Line

template<typename T>
class Line
{
public:
/**
Constructor for null line ([0, 0] to [0, 0]).
*/
Line() noexcept;

/**
Constructor using custom start X, start Y, end X and end Y values.
*/
Line(const T& startX, const T& startY, const T& endX, const T& endY) noexcept;

/**
Constructor using custom start X, start Y, end pos values.
*/
Line(const T& startX, const T& startY, const Point<T>& endPos) noexcept;

/**
Constructor using custom start pos, end X and end Y values.
*/
Line(const Point<T>& startPos, const T& endX, const T& endY) noexcept;

/**
Constructor using custom start and end pos values.
*/
Line(const Point<T>& startPos, const Point<T>& endPos) noexcept;

/**
Constructor using another Line class values.
*/
Line(const Line<T>& line) noexcept;

/**
Get start X value.
*/
const T& getStartX() const noexcept;

/**
Get start Y value.
*/
const T& getStartY() const noexcept;

/**
Get end X value.
*/
const T& getEndX() const noexcept;

/**
Get end Y value.
*/
const T& getEndY() const noexcept;

/**
Get start position.
*/
const Point<T>& getStartPos() const noexcept;

/**
Get end position.
*/
const Point<T>& getEndPos() const noexcept;

/**
Set start X value as @a x.
*/
void setStartX(const T& x) noexcept;

/**
Set start Y value as @a y.
*/
void setStartY(const T& y) noexcept;

/**
Set start X and Y values as @a x and @a y respectively.
*/
void setStartPos(const T& x, const T& y) noexcept;

/**
Set start X and Y values according to @a pos.
*/
void setStartPos(const Point<T>& pos) noexcept;

/**
Set end X value as @a x.
*/
void setEndX(const T& x) noexcept;

/**
Set end Y value as @a y.
*/
void setEndY(const T& y) noexcept;

/**
Set end X and Y values as @a x and @a y respectively.
*/
void setEndPos(const T& x, const T& y) noexcept;

/**
Set end X and Y values according to @a pos.
*/
void setEndPos(const Point<T>& pos) noexcept;

/**
Move this line by @a x and @a y values.
*/
void moveBy(const T& x, const T& y) noexcept;

/**
Move this line by @a pos.
*/
void moveBy(const Point<T>& pos) noexcept;

/**
Draw this line using the current OpenGL state.
*/
void draw();

Line<T>& operator=(const Line<T>& line) noexcept;
@@ -138,47 +307,155 @@ private:
};

// -----------------------------------------------------------------------
// Rectangle

template<typename T>
class Rectangle
{
public:
/**
Constructor for null rectangle.
*/
Rectangle() noexcept;

/**
Constructor using custom X, Y, width and height values.
*/
Rectangle(const T& x, const T& y, const T& width, const T& height) noexcept;

/**
Constructor using custom X, Y and size values.
*/
Rectangle(const T& x, const T& y, const Size<T>& size) noexcept;

/**
Constructor using custom pos, width and height values.
*/
Rectangle(const Point<T>& pos, const T& width, const T& height) noexcept;

/**
Constructor using custom position and size.
*/
Rectangle(const Point<T>& pos, const Size<T>& size) noexcept;

/**
Constructor using another Rectangle class values.
*/
Rectangle(const Rectangle<T>& rect) noexcept;

/**
Get X value.
*/
const T& getX() const noexcept;

/**
Get Y value.
*/
const T& getY() const noexcept;

/**
Get width.
*/
const T& getWidth() const noexcept;

/**
Get height.
*/
const T& getHeight() const noexcept;

/**
Get position.
*/
const Point<T>& getPos() const noexcept;
const Size<T>& getSize() const noexcept;

/**
Get size.
*/
const Size<T>& getSize() const noexcept;

/**
Set X value as @a x.
*/
void setX(const T& x) noexcept;

/**
Set Y value as @a y.
*/
void setY(const T& y) noexcept;

/**
Set X and Y values as @a x and @a y respectively.
*/
void setPos(const T& x, const T& y) noexcept;

/**
Set X and Y values according to @a pos.
*/
void setPos(const Point<T>& pos) noexcept;

/**
Move this rectangle by @a x and @a y values.
*/
void moveBy(const T& x, const T& y) noexcept;

/**
Move this rectangle by @a pos.
*/
void moveBy(const Point<T>& pos) noexcept;

/**
Set width.
*/
void setWidth(const T& width) noexcept;

/**
Set height.
*/
void setHeight(const T& height) noexcept;

/**
Set size using @a width and @a height.
*/
void setSize(const T& width, const T& height) noexcept;

/**
Set size.
*/
void setSize(const Size<T>& size) noexcept;

/**
Grow size by @a multiplier.
*/
void growBy(const T& multiplier) noexcept;

/**
Shrink size by @a divider.
*/
void shrinkBy(const T& divider) noexcept;

/**
Check if this rectangle contains the point defined by @a X and @a Y.
*/
bool contains(const T& x, const T& y) const noexcept;

/**
Check if this rectangle contains the point @a pos.
*/
bool contains(const Point<T>& pos) const noexcept;

/**
Check if this rectangle contains X.
*/
bool containsX(const T& x) const noexcept;

/**
Check if this rectangle contains Y.
*/
bool containsY(const T& y) const noexcept;

/**
Draw this rectangle using the current OpenGL state.
*/
void draw();

Rectangle<T>& operator=(const Rectangle<T>& rect) noexcept;


+ 3
- 0
dgl/src/AppPrivateData.hpp View File

@@ -37,6 +37,9 @@ struct App::PrivateData {

~PrivateData()
{
DISTRHO_SAFE_ASSERT(! doLoop);
DISTRHO_SAFE_ASSERT(visibleWindows == 0);

windows.clear();
idleCallbacks.clear();
}


+ 4
- 4
distrho/DistrhoUtils.hpp View File

@@ -139,7 +139,7 @@ void d_safe_exception(const char* const exception, const char* const file, const
// d_*sleep

static inline
void d_sleep(const uint secs)
void d_sleep(const uint secs) noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(secs > 0,);

@@ -149,11 +149,11 @@ void d_sleep(const uint secs)
#else
::sleep(secs);
#endif
} DISTRHO_SAFE_EXCEPTION("carla_sleep");
} DISTRHO_SAFE_EXCEPTION("d_sleep");
}

static inline
void d_msleep(const uint msecs)
void d_msleep(const uint msecs) noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(msecs > 0,);

@@ -163,7 +163,7 @@ void d_msleep(const uint msecs)
#else
::usleep(msecs * 1000);
#endif
} DISTRHO_SAFE_EXCEPTION("carla_msleep");
} DISTRHO_SAFE_EXCEPTION("d_msleep");
}

// -----------------------------------------------------------------------


+ 4
- 6
distrho/src/DistrhoDefines.h View File

@@ -37,10 +37,8 @@
# define DISTRHO_DLL_EXTENSION "dylib"
# elif defined(__HAIKU__)
# define DISTRHO_OS_HAIKU 1
# define DISTRHO_DLL_EXTENSION "so"
# elif defined(__linux__)
# define DISTRHO_OS_LINUX 1
# define DISTRHO_DLL_EXTENSION "so"
# endif
#endif

@@ -67,10 +65,10 @@
#endif

/* Define DISTRHO_SAFE_ASSERT* */
#define DISTRHO_SAFE_ASSERT(cond) if (cond) d_pass(); else d_safe_assert(#cond, __FILE__, __LINE__);
#define DISTRHO_SAFE_ASSERT_BREAK(cond) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); break; }
#define DISTRHO_SAFE_ASSERT_CONTINUE(cond) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); continue; }
#define DISTRHO_SAFE_ASSERT_RETURN(cond, ret) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); return ret; }
#define DISTRHO_SAFE_ASSERT(cond) if (! (cond)) d_safe_assert(#cond, __FILE__, __LINE__);
#define DISTRHO_SAFE_ASSERT_BREAK(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); break; }
#define DISTRHO_SAFE_ASSERT_CONTINUE(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); continue; }
#define DISTRHO_SAFE_ASSERT_RETURN(cond, ret) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); return ret; }

/* Define DISTRHO_SAFE_EXCEPTION */
#define DISTRHO_SAFE_EXCEPTION(msg) catch(...) { d_safe_exception(msg, __FILE__, __LINE__); }


+ 11
- 16
examples/Makefile View File

@@ -14,13 +14,9 @@ LINK_FLAGS += -L.. -ldgl $(DGL_LIBS)
# --------------------------------------------------------------

ifeq ($(WIN32),true)
TARGETS = app.exe color.exe images.exe nekobi-ui.exe
TARGETS = dgl-app.exe dgl-color.exe dgl-images.exe
else
ifeq ($(MACOS),true)
TARGETS = app color images nekobi-ui
else
TARGETS = app cairo color images nekobi-ui
endif
TARGETS = dgl-app dgl-color dgl-images
endif

# --------------------------------------------------------------
@@ -29,7 +25,7 @@ all: ../libdgl.a $(TARGETS)

clean:
$(MAKE) -C ../dgl clean
$(RM) *.exe app cairo color images nekobi-ui
$(RM) $(TARGETS)

debug:
$(MAKE) DEBUG=true
@@ -46,22 +42,21 @@ debug:

# --------------------------------------------------------------

app: app.cpp ../dgl/*
dgl-app: dgl-app.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

cairo: cairo.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags --libs cairo) $(LINK_FLAGS) -o $@

color: color.cpp ../dgl/*
dgl-color: dgl-color.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

images: images.cpp images_src/* ../dgl/*
dgl-images: dgl-images.cpp dgl-images_src/* ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

nekobi-ui: nekobi-ui.cpp nekobi-ui_src/* ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@
# --------------------------------------------------------------

dgl-cairo: dgl-cairo.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags --libs cairo) $(LINK_FLAGS) -o $@

text: text.cpp ../dgl/*
dgl-text: dgl-text.cpp ../dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

# --------------------------------------------------------------


+ 0
- 17
examples/app-bundle/nekobi-ui.pro View File

@@ -1,17 +0,0 @@
# qmake project file for app bundle test

TARGET = nekobi-ui

# -------------------------------------------------------

CONFIG = app_bundle warn_on
TEMPLATE = app
VERSION = 1.0.0

# -------------------------------------------------------

INCLUDEPATH = ../../dgl
LIBS = ../../libdgl.a -framework OpenGL -framework Cocoa
SOURCES = ../nekobi-ui.cpp

# -------------------------------------------------------

examples/app.cpp → examples/dgl-app.cpp View File


examples/color.cpp → examples/dgl-color.cpp View File


examples/images.cpp → examples/dgl-images.cpp View File

@@ -17,7 +17,7 @@
// ------------------------------------------------------
// Pics

#include "images_src/CatPics.cpp"
#include "dgl-images_src/CatPics.cpp"

// ------------------------------------------------------
// DGL Stuff

examples/images_src/CREDITS.txt → examples/dgl-images_src/CREDITS.txt View File


examples/images_src/CatPics.cpp → examples/dgl-images_src/CatPics.cpp View File


examples/images_src/CatPics.hpp → examples/dgl-images_src/CatPics.hpp View File


examples/images_src/cat1.png → examples/dgl-images_src/cat1.png View File


examples/images_src/cat2.png → examples/dgl-images_src/cat2.png View File


examples/images_src/cat3.png → examples/dgl-images_src/cat3.png View File


+ 0
- 54
examples/nekobi-ui.cpp View File

@@ -1,54 +0,0 @@
/*
* DISTRHO Plugin Framework (DPF)
* Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose with
* or without fee is hereby granted, provided that the above copyright notice and this
* permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
* TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

// ------------------------------------------------------
// DGL StandaloneWindow

#include "StandaloneWindow.hpp"

// ------------------------------------------------------
// include all source code here to make building easier

#include "nekobi-ui_src/DistrhoArtworkNekobi.cpp"
#include "nekobi-ui_src/DistrhoUINekobi.cpp"

// ------------------------------------------------------
// main entry point

int main()
{
DGL::StandaloneWindow appWin;
DGL::Window& win(appWin.getWindow());

DistrhoUINekobi gui(win);
win.setResizable(false);
win.setSize(gui.getWidth(), gui.getHeight());
win.setTitle("DGL UI Test");
win.show();

DGL::App& app(appWin.getApp());

while (! app.isQuiting())
{
gui.idle();
app.idle();
d_msleep(10);
}

return 0;
}

// ------------------------------------------------------

+ 0
- 6890
examples/nekobi-ui_src/DistrhoArtworkNekobi.cpp
File diff suppressed because it is too large
View File


+ 0
- 90
examples/nekobi-ui_src/DistrhoArtworkNekobi.hpp View File

@@ -1,90 +0,0 @@
/* (Auto-generated binary data file). */

#ifndef BINARY_DISTRHOARTWORKNEKOBI_HPP
#define BINARY_DISTRHOARTWORKNEKOBI_HPP

namespace DistrhoArtworkNekobi
{
extern const char* aboutData;
const unsigned int aboutDataSize = 172710;
const unsigned int aboutWidth = 303;
const unsigned int aboutHeight = 190;

extern const char* aboutButtonHoverData;
const unsigned int aboutButtonHoverDataSize = 5888;
const unsigned int aboutButtonHoverWidth = 92;
const unsigned int aboutButtonHoverHeight = 16;

extern const char* aboutButtonNormalData;
const unsigned int aboutButtonNormalDataSize = 5888;
const unsigned int aboutButtonNormalWidth = 92;
const unsigned int aboutButtonNormalHeight = 16;

extern const char* backgroundData;
const unsigned int backgroundDataSize = 206064;
const unsigned int backgroundWidth = 636;
const unsigned int backgroundHeight = 108;

extern const char* claw1Data;
const unsigned int claw1DataSize = 4096;
const unsigned int claw1Width = 32;
const unsigned int claw1Height = 32;

extern const char* claw2Data;
const unsigned int claw2DataSize = 4096;
const unsigned int claw2Width = 32;
const unsigned int claw2Height = 32;

extern const char* knobData;
const unsigned int knobDataSize = 10000;
const unsigned int knobWidth = 50;
const unsigned int knobHeight = 50;

extern const char* run1Data;
const unsigned int run1DataSize = 4096;
const unsigned int run1Width = 32;
const unsigned int run1Height = 32;

extern const char* run2Data;
const unsigned int run2DataSize = 4096;
const unsigned int run2Width = 32;
const unsigned int run2Height = 32;

extern const char* run3Data;
const unsigned int run3DataSize = 4096;
const unsigned int run3Width = 32;
const unsigned int run3Height = 32;

extern const char* run4Data;
const unsigned int run4DataSize = 4096;
const unsigned int run4Width = 32;
const unsigned int run4Height = 32;

extern const char* scratch1Data;
const unsigned int scratch1DataSize = 4096;
const unsigned int scratch1Width = 32;
const unsigned int scratch1Height = 32;

extern const char* scratch2Data;
const unsigned int scratch2DataSize = 4096;
const unsigned int scratch2Width = 32;
const unsigned int scratch2Height = 32;

extern const char* sitData;
const unsigned int sitDataSize = 4096;
const unsigned int sitWidth = 32;
const unsigned int sitHeight = 32;

extern const char* sliderData;
const unsigned int sliderDataSize = 6084;
const unsigned int sliderWidth = 39;
const unsigned int sliderHeight = 39;

extern const char* tailData;
const unsigned int tailDataSize = 4096;
const unsigned int tailWidth = 32;
const unsigned int tailHeight = 32;
}

#endif // BINARY_DISTRHOARTWORKNEKOBI_HPP


+ 0
- 142
examples/nekobi-ui_src/DistrhoUINekobi.cpp View File

@@ -1,142 +0,0 @@
/*
* DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others.
* Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "DistrhoUINekobi.hpp"

using DGL::Point;

// -----------------------------------------------------------------------

DistrhoUINekobi::DistrhoUINekobi(DGL::Window& parent)
: DGL::Widget(parent),
fAboutWindow(this)
{
fNeko.setTimerSpeed(15);

// background
fImgBackground = Image(DistrhoArtworkNekobi::backgroundData, DistrhoArtworkNekobi::backgroundWidth, DistrhoArtworkNekobi::backgroundHeight, GL_BGR);

Image imageAbout(DistrhoArtworkNekobi::aboutData, DistrhoArtworkNekobi::aboutWidth, DistrhoArtworkNekobi::aboutHeight, GL_BGR);
fAboutWindow.setImage(imageAbout);

// slider
Image sliderImage(DistrhoArtworkNekobi::sliderData, DistrhoArtworkNekobi::sliderWidth, DistrhoArtworkNekobi::sliderHeight);

fSliderWaveform = new ImageSlider(this, sliderImage);
fSliderWaveform->setStartPos(133, 40);
fSliderWaveform->setEndPos(133, 60);
fSliderWaveform->setRange(0.0f, 1.0f);
fSliderWaveform->setValue(0.0f);
fSliderWaveform->setStep(1.0f);

// knobs
Image knobImage(DistrhoArtworkNekobi::knobData, DistrhoArtworkNekobi::knobWidth, DistrhoArtworkNekobi::knobHeight);

// knob Tuning
fKnobTuning = new ImageKnob(this, knobImage);
fKnobTuning->setPos(41, 43);
fKnobTuning->setRange(-12.0f, 12.0f);
fKnobTuning->setValue(0.0f);
fKnobTuning->setRotationAngle(305);

// knob Cutoff
fKnobCutoff = new ImageKnob(this, knobImage);
fKnobCutoff->setPos(185, 43);
fKnobCutoff->setRange(0.0f, 100.0f);
fKnobCutoff->setValue(25.0f);
fKnobCutoff->setRotationAngle(305);

// knob Resonance
fKnobResonance = new ImageKnob(this, knobImage);
fKnobResonance->setPos(257, 43);
fKnobResonance->setRange(0.0f, 95.0f);
fKnobResonance->setValue(25.0f);
fKnobResonance->setRotationAngle(305);

// knob Env Mod
fKnobEnvMod = new ImageKnob(this, knobImage);
fKnobEnvMod->setPos(329, 43);
fKnobEnvMod->setRange(0.0f, 100.0f);
fKnobEnvMod->setValue(50.0f);
fKnobEnvMod->setRotationAngle(305);

// knob Decay
fKnobDecay = new ImageKnob(this, knobImage);
fKnobDecay->setPos(400, 43);
fKnobDecay->setRange(0.0f, 100.0f);
fKnobDecay->setValue(75.0f);
fKnobDecay->setRotationAngle(305);

// knob Accent
fKnobAccent = new ImageKnob(this, knobImage);
fKnobAccent->setPos(473, 43);
fKnobAccent->setRange(0.0f, 100.0f);
fKnobAccent->setValue(25.0f);
fKnobAccent->setRotationAngle(305);

// knob Volume
fKnobVolume = new ImageKnob(this, knobImage);
fKnobVolume->setPos(545, 43);
fKnobVolume->setRange(0.0f, 100.0f);
fKnobVolume->setValue(75.0f);
fKnobVolume->setRotationAngle(305);

// about button
Image aboutImageNormal(DistrhoArtworkNekobi::aboutButtonNormalData, DistrhoArtworkNekobi::aboutButtonNormalWidth, DistrhoArtworkNekobi::aboutButtonNormalHeight);
Image aboutImageHover(DistrhoArtworkNekobi::aboutButtonHoverData, DistrhoArtworkNekobi::aboutButtonHoverWidth, DistrhoArtworkNekobi::aboutButtonHoverHeight);
fButtonAbout = new ImageButton(this, aboutImageNormal, aboutImageHover, aboutImageHover);
fButtonAbout->setPos(505, 5);
fButtonAbout->setCallback(this);
}

DistrhoUINekobi::~DistrhoUINekobi()
{
delete fSliderWaveform;
delete fKnobTuning;
delete fKnobCutoff;
delete fKnobResonance;
delete fKnobEnvMod;
delete fKnobDecay;
delete fKnobAccent;
delete fKnobVolume;
delete fButtonAbout;
}

void DistrhoUINekobi::idle()
{
if (fNeko.idle())
repaint();
}

// -----------------------------------------------------------------------
// Widget Callbacks

void DistrhoUINekobi::imageButtonClicked(ImageButton* button, int)
{
if (button != fButtonAbout)
return;

fAboutWindow.exec();
}

void DistrhoUINekobi::onDisplay()
{
fImgBackground.draw();
fNeko.draw();
}

// -----------------------------------------------------------------------

+ 0
- 81
examples/nekobi-ui_src/DistrhoUINekobi.hpp View File

@@ -1,81 +0,0 @@
/*
* DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others.
* Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef DISTRHO_UI_NEKOBI_HPP_INCLUDED
#define DISTRHO_UI_NEKOBI_HPP_INCLUDED

#include "ImageAboutWindow.hpp"
#include "ImageButton.hpp"
#include "ImageKnob.hpp"
#include "ImageSlider.hpp"

#include "DistrhoArtworkNekobi.hpp"
#include "NekoWidget.hpp"

using DGL::ImageAboutWindow;
using DGL::ImageButton;
using DGL::ImageKnob;
using DGL::ImageSlider;

// -----------------------------------------------------------------------

class DistrhoUINekobi : public DGL::Widget,
public ImageButton::Callback
{
public:
DistrhoUINekobi(DGL::Window& parent);
~DistrhoUINekobi() override;

unsigned int getWidth() const noexcept
{
return DistrhoArtworkNekobi::backgroundWidth;
}

unsigned int getHeight() const noexcept
{
return DistrhoArtworkNekobi::backgroundHeight;
}

void idle();

protected:
// -------------------------------------------------------------------
// Widget Callbacks

void imageButtonClicked(ImageButton* button, int) override;
void onDisplay() override;

private:
Image fImgBackground;
NekoWidget fNeko;

ImageKnob* fKnobTuning;
ImageKnob* fKnobCutoff;
ImageKnob* fKnobResonance;
ImageKnob* fKnobEnvMod;
ImageKnob* fKnobDecay;
ImageKnob* fKnobAccent;
ImageKnob* fKnobVolume;

ImageButton* fButtonAbout;
ImageSlider* fSliderWaveform;
ImageAboutWindow fAboutWindow;
};

// -----------------------------------------------------------------------

#endif // DISTRHO_UI_NEKOBI_HPP_INCLUDED

+ 0
- 204
examples/nekobi-ui_src/NekoWidget.hpp View File

@@ -1,204 +0,0 @@
/*
* Neko widget animation
* Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef NEKO_WIDGET_HPP_INCLUDED
#define NEKO_WIDGET_HPP_INCLUDED

#include "Image.hpp"
#include "Widget.hpp"

#include <cstdlib> // rand

#include "DistrhoArtworkNekobi.hpp"

using DGL::Image;

USE_NAMESPACE_DGL;

// -----------------------------------------------------------------------

class NekoWidget
{
public:
NekoWidget()
: fPos(0),
fTimer(0),
fTimerSpeed(20),
fCurAction(kActionNone),
fCurImage(&fImages.sit)
{
// load images
{
using namespace DistrhoArtworkNekobi;

#define JOIN(a, b) a ## b
#define LOAD_IMAGE(NAME) fImages.NAME.loadFromMemory(JOIN(NAME, Data), JOIN(NAME, Width), JOIN(NAME, Height));

LOAD_IMAGE(sit)
LOAD_IMAGE(tail)
LOAD_IMAGE(claw1)
LOAD_IMAGE(claw2)
LOAD_IMAGE(scratch1)
LOAD_IMAGE(scratch2)
LOAD_IMAGE(run1)
LOAD_IMAGE(run2)
LOAD_IMAGE(run3)
LOAD_IMAGE(run4)

#undef JOIN
#undef LOAD_IMAGE
}
}

void draw()
{
int x = fPos+108;
int y = -2;

if (fCurImage == &fImages.claw1 || fCurImage == &fImages.claw2)
{
x += 2;
y += 12;
}

fCurImage->drawAt(x, y);
}

// returns true if needs repaint
bool idle()
{
if (++fTimer % fTimerSpeed != 0) // target is 20ms
return false;

if (fTimer == fTimerSpeed*9)
{
if (fCurAction == kActionNone)
fCurAction = static_cast<Action>(std::rand() % kActionCount);
else
fCurAction = kActionNone;

fTimer = 0;
}

switch (fCurAction)
{
case kActionNone:
if (fCurImage == &fImages.sit)
fCurImage = &fImages.tail;
else
fCurImage = &fImages.sit;
break;

case kActionClaw:
if (fCurImage == &fImages.claw1)
fCurImage = &fImages.claw2;
else
fCurImage = &fImages.claw1;
break;

case kActionScratch:
if (fCurImage == &fImages.scratch1)
fCurImage = &fImages.scratch2;
else
fCurImage = &fImages.scratch1;
break;

case kActionRunRight:
if (fTimer == 0 && fPos > 20*9)
{
// run the other way
--fTimer;
fCurAction = kActionRunLeft;
idle();
break;
}

fPos += 20;

if (fCurImage == &fImages.run1)
fCurImage = &fImages.run2;
else
fCurImage = &fImages.run1;
break;

case kActionRunLeft:
if (fTimer == 0 && fPos < 20*9)
{
// run the other way
--fTimer;
fCurAction = kActionRunRight;
idle();
break;
}

fPos -= 20;

if (fCurImage == &fImages.run3)
fCurImage = &fImages.run4;
else
fCurImage = &fImages.run3;
break;

case kActionCount:
break;
}

return true;
}

void setTimerSpeed(int speed)
{
fTimer = 0;
fTimerSpeed = speed;
}

// -------------------------------------------------------------------

private:
enum Action {
kActionNone, // bounce tail
kActionClaw,
kActionScratch,
kActionRunRight,
kActionRunLeft,
kActionCount
};

struct Images {
Image sit;
Image tail;
Image claw1;
Image claw2;
Image scratch1;
Image scratch2;
Image run1;
Image run2;
Image run3;
Image run4;
} fImages;

int fPos;
int fTimer;
int fTimerSpeed;

Action fCurAction;
Image* fCurImage;
};

// -----------------------------------------------------------------------

#endif // NEKO_WIDGET_HPP_INCLUDED

BIN
examples/nekobi-ui_src/artwork/about.png View File

Before After
Width: 303  |  Height: 190  |  Size: 60KB

BIN
examples/nekobi-ui_src/artwork/aboutButtonHover.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.0KB

BIN
examples/nekobi-ui_src/artwork/aboutButtonNormal.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.1KB

BIN
examples/nekobi-ui_src/artwork/background.png View File

Before After
Width: 636  |  Height: 108  |  Size: 43KB

BIN
examples/nekobi-ui_src/artwork/claw1.png View File

Before After
Width: 32  |  Height: 32  |  Size: 359B

BIN
examples/nekobi-ui_src/artwork/claw2.png View File

Before After
Width: 32  |  Height: 32  |  Size: 354B

BIN
examples/nekobi-ui_src/artwork/knob.png View File

Before After
Width: 50  |  Height: 50  |  Size: 2.9KB

BIN
examples/nekobi-ui_src/artwork/run1.png View File

Before After
Width: 32  |  Height: 32  |  Size: 383B

BIN
examples/nekobi-ui_src/artwork/run2.png View File

Before After
Width: 32  |  Height: 32  |  Size: 370B

BIN
examples/nekobi-ui_src/artwork/run3.png View File

Before After
Width: 32  |  Height: 32  |  Size: 383B

BIN
examples/nekobi-ui_src/artwork/run4.png View File

Before After
Width: 32  |  Height: 32  |  Size: 369B

BIN
examples/nekobi-ui_src/artwork/scratch1.png View File

Before After
Width: 32  |  Height: 32  |  Size: 375B

BIN
examples/nekobi-ui_src/artwork/scratch2.png View File

Before After
Width: 32  |  Height: 32  |  Size: 348B

BIN
examples/nekobi-ui_src/artwork/sit.png View File

Before After
Width: 32  |  Height: 32  |  Size: 347B

BIN
examples/nekobi-ui_src/artwork/slider.png View File

Before After
Width: 39  |  Height: 39  |  Size: 4.1KB

BIN
examples/nekobi-ui_src/artwork/tail.png View File

Before After
Width: 32  |  Height: 32  |  Size: 353B

+ 0
- 36
examples/shaders/cube.frag View File

@@ -1,36 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
void main()
{
gl_FragColor = gl_Color;
}

+ 0
- 45
examples/shaders/cube.vert View File

@@ -1,45 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

uniform vec4 Color;
attribute vec3 vertex;
attribute vec4 color;
void main()
{
gl_FrontColor = color*Color;
gl_Position = gl_ModelViewProjectionMatrix * vec4(vertex,1.0);
//gl_Position = projection*(view*(model*vec4(vertex,1.0)));
}

+ 0
- 43
examples/shaders/distance-field-2.frag View File

@@ -1,43 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform sampler2D texture;
void main(void)
{
vec4 color = texture2D(texture, gl_TexCoord[0].st);
float dist = color.r;
float width = fwidth(dist);
float alpha = smoothstep(0.5-width, 0.5+width, dist);
gl_FragColor = vec4(gl_Color.rgb, alpha*gl_Color.a);
}



+ 0
- 47
examples/shaders/distance-field-2.vert View File

@@ -1,47 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform sampler2D texture;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
uniform vec4 Color;

attribute vec3 vertex;
attribute vec2 tex_coord;
attribute vec4 color;
void main()
{
gl_TexCoord[0].xy = tex_coord.xy;
gl_FrontColor = color*Color;
gl_Position = projection*(view*(model*vec4(vertex,1.0)));
}

+ 0
- 43
examples/shaders/distance-field-3.frag View File

@@ -1,43 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform sampler2D texture;
void main(void)
{
vec3 color = vec3(0.0,0.0,0.0);
float dist = texture2D(texture, gl_TexCoord[0].st).r;
float width = fwidth(dist);
float alpha = smoothstep(0.5-width, 0.5+width, dist);
gl_FragColor = vec4(color, alpha);
}



+ 0
- 70
examples/shaders/distance-field.frag View File

@@ -1,70 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform sampler2D texture;
vec3 glyph_color = vec3(1.0,1.0,1.0);
const float glyph_center = 0.50;
vec3 outline_color = vec3(0.0,0.0,0.0);
const float outline_center = 0.55;
vec3 glow_color = vec3(1.0,1.0,1.0);
const float glow_center = 1.25;
void main(void)
{
vec4 color = texture2D(texture, gl_TexCoord[0].st);
float dist = color.r;
float width = fwidth(dist);
float alpha = smoothstep(glyph_center-width, glyph_center+width, dist);

// Smooth
// gl_FragColor = vec4(glyph_color, alpha);

// Outline
// float mu = smoothstep(outline_center-width, outline_center+width, dist);
// vec3 rgb = mix(outline_color, glyph_color, mu);
// gl_FragColor = vec4(rgb, max(alpha,mu));

// Glow
//vec3 rgb = mix(glow_color, glyph_color, alpha);
//float mu = smoothstep(glyph_center, glow_center, sqrt(dist));
//gl_FragColor = vec4(rgb, max(alpha,mu));

// Glow + outline
vec3 rgb = mix(glow_color, glyph_color, alpha);
float mu = smoothstep(glyph_center, glow_center, sqrt(dist));
color = vec4(rgb, max(alpha,mu));
float beta = smoothstep(outline_center-width, outline_center+width, dist);
rgb = mix(outline_color, color.rgb, beta);
gl_FragColor = vec4(rgb, max(color.a,beta));

}



+ 0
- 40
examples/shaders/distance-field.vert View File

@@ -1,40 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
void main(void)
{
gl_FrontColor = gl_Color;
gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}



+ 0
- 152
examples/shaders/text.frag View File

@@ -1,152 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */


vec3
energy_distribution( vec4 previous, vec4 current, vec4 next )
{
float primary = 1.0/3.0;
float secondary = 1.0/3.0;
float tertiary = 0.0;

// Energy distribution as explained on:
// http://www.grc.com/freeandclear.htm
//
// .. v..
// RGB RGB RGB
// previous.g + previous.b + current.r + current.g + current.b
//
// . .v. .
// RGB RGB RGB
// previous.b + current.r + current.g + current.b + next.r
//
// ..v ..
// RGB RGB RGB
// current.r + current.g + current.b + next.r + next.g

float r =
tertiary * previous.g +
secondary * previous.b +
primary * current.r +
secondary * current.g +
tertiary * current.b;

float g =
tertiary * previous.b +
secondary * current.r +
primary * current.g +
secondary * current.b +
tertiary * next.r;

float b =
tertiary * current.r +
secondary * current.g +
primary * current.b +
secondary * next.r +
tertiary * next.g;

return vec3(r,g,b);
}


uniform sampler2D texture;
uniform vec3 pixel;
varying float vgamma;
varying float vshift;
void main()
{
vec2 uv = gl_TexCoord[0].xy;
float shift = vshift;

// LCD Off
if( pixel.z == 1.0)
{
float a = texture2D(texture, uv).r;
gl_FragColor = gl_Color * pow( a, 1.0/vgamma );
return;
}

// LCD On
vec4 current = texture2D(texture, uv);
vec4 previous= texture2D(texture, uv+vec2(-1.,0.)*pixel.xy);
vec4 next = texture2D(texture, uv+vec2(+1.,0.)*pixel.xy);

current = pow(current, vec4(1.0/vgamma));
previous= pow(previous, vec4(1.0/vgamma));

float r = current.r;
float g = current.g;
float b = current.b;

if( shift <= 0.333 )
{
float z = shift/0.333;
r = mix(current.r, previous.b, z);
g = mix(current.g, current.r, z);
b = mix(current.b, current.g, z);
}
else if( shift <= 0.666 )
{
float z = (shift-0.33)/0.333;
r = mix(previous.b, previous.g, z);
g = mix(current.r, previous.b, z);
b = mix(current.g, current.r, z);
}
else if( shift < 1.0 )
{
float z = (shift-0.66)/0.334;
r = mix(previous.g, previous.r, z);
g = mix(previous.b, previous.g, z);
b = mix(current.r, previous.b, z);
}

float t = max(max(r,g),b);
vec4 color = vec4(gl_Color.rgb, (r+g+b)/3.0);
color = t*color + (1.0-t)*vec4(r,g,b, min(min(r,g),b));
gl_FragColor = vec4( color.rgb, gl_Color.a*color.a);


// gl_FragColor = vec4(pow(vec3(r,g,b),vec3(1.0/vgamma)),a);

/*
vec3 color = energy_distribution(previous, vec4(r,g,b,1), next);
color = pow( color, vec3(1.0/vgamma));

vec3 color = vec3(r,g,b); //pow( vec3(r,g,b), vec3(1.0/vgamma));
gl_FragColor.rgb = color; //*gl_Color.rgb;
gl_FragColor.a = (color.r+color.g+color.b)/3.0 * gl_Color.a;
*/

// gl_FragColor = vec4(pow(vec3(r,g,b),vec3(1.0/vgamma)),a);
//gl_FragColor = vec4(r,g,b,a);
}

+ 0
- 55
examples/shaders/text.vert View File

@@ -1,55 +0,0 @@
/* ============================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* ----------------------------------------------------------------------------
* Copyright 2011,2012 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ============================================================================
*/
uniform sampler2D texture;
uniform vec3 pixel;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;


attribute vec3 vertex;
attribute vec4 color;
attribute vec2 tex_coord;
attribute float ashift;
attribute float agamma;
varying float vshift;
varying float vgamma;
void main()
{
vshift = ashift;
vgamma = agamma;
gl_FrontColor = color;
gl_TexCoord[0].xy = tex_coord.xy;
gl_Position = projection*(view*(model*vec4(vertex,1.0)));
}

+ 0
- 36
examples/shaders/v3f-c4f.frag View File

@@ -1,36 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
void main()
{
gl_FragColor = gl_Color;
}

+ 0
- 43
examples/shaders/v3f-c4f.vert View File

@@ -1,43 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

attribute vec3 vertex;
attribute vec4 color;
void main()
{
gl_FrontColor = color;
gl_Position = projection*(view*(model*vec4(vertex,1.0)));
}

+ 0
- 38
examples/shaders/v3f-t2f-c4f.frag View File

@@ -1,38 +0,0 @@
/* =========================================================================
* Freetype GL - A C OpenGL Freetype engine
* Platform: Any
* WWW: http://code.google.com/p/freetype-gl/
* -------------------------------------------------------------------------
* Copyright 2011 Nicolas P. Rougier. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of Nicolas P. Rougier.
* ========================================================================= */
uniform sampler2D texture;
void main()
{
float a = texture2D(texture, gl_TexCoord[0].xy).r;
gl_FragColor = vec4(gl_Color.rgb, gl_Color.a*a);
}

+ 0
- 45
examples/shaders/v3f-t2f-c4f.vert View File

@@ -1,45 +0,0 @@
/* =========================================================================