summaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorRay <[email protected]>2019-05-14 00:07:34 +0200
committerRay <[email protected]>2019-05-14 00:07:34 +0200
commit6804c2189e07a661ef975146c288619589c90731 (patch)
tree2171f98c7f996a921e8cff3242d9ada2aa2b6136 /examples
parenta2ed65aa1461addee7093d92ca80615d607e926b (diff)
downloadraylib-6804c2189e07a661ef975146c288619589c90731.tar.gz
raylib-6804c2189e07a661ef975146c288619589c90731.zip
new examples: shaders_texture_waves
Diffstat (limited to 'examples')
-rw-r--r--examples/shaders/resources/shaders/glsl330/wave.fs37
-rw-r--r--examples/shaders/resources/space.pngbin0 -> 22517 bytes
-rw-r--r--examples/shaders/shaders_texture_waves.c113
-rw-r--r--examples/shaders/shaders_texture_waves.pngbin0 -> 86453 bytes
4 files changed, 150 insertions, 0 deletions
diff --git a/examples/shaders/resources/shaders/glsl330/wave.fs b/examples/shaders/resources/shaders/glsl330/wave.fs
new file mode 100644
index 00000000..f139f395
--- /dev/null
+++ b/examples/shaders/resources/shaders/glsl330/wave.fs
@@ -0,0 +1,37 @@
+#version 330
+
+// Input vertex attributes (from vertex shader)
+in vec2 fragTexCoord;
+in vec4 fragColor;
+
+// Input uniform values
+uniform sampler2D texture0;
+uniform vec4 colDiffuse;
+
+// Output fragment color
+out vec4 finalColor;
+
+uniform float secondes;
+
+uniform vec2 size;
+
+uniform float freqX;
+uniform float freqY;
+uniform float ampX;
+uniform float ampY;
+uniform float speedX;
+uniform float speedY;
+
+void main() {
+ float pixelWidth = 1.0 / size.x;
+ float pixelHeight = 1.0 / size.y;
+ float aspect = pixelHeight / pixelWidth;
+ float boxLeft = 0.0;
+ float boxTop = 0.0;
+
+ vec2 p = fragTexCoord;
+ p.x += cos((fragTexCoord.y - boxTop) * freqX / ( pixelWidth * 750.0) + (secondes * speedX)) * ampX * pixelWidth;
+ p.y += sin((fragTexCoord.x - boxLeft) * freqY * aspect / ( pixelHeight * 750.0) + (secondes * speedY)) * ampY * pixelHeight;
+
+ finalColor = texture(texture0, p)*colDiffuse*fragColor;
+}
diff --git a/examples/shaders/resources/space.png b/examples/shaders/resources/space.png
new file mode 100644
index 00000000..41129739
--- /dev/null
+++ b/examples/shaders/resources/space.png
Binary files differ
diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c
new file mode 100644
index 00000000..03c62deb
--- /dev/null
+++ b/examples/shaders/shaders_texture_waves.c
@@ -0,0 +1,113 @@
+/*******************************************************************************************
+*
+* raylib [shaders] example - Texture Waves
+*
+* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support,
+* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version.
+*
+* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example
+* on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders
+* raylib comes with shaders ready for both versions, check raylib/shaders install folder
+*
+* This example has been created using raylib 2.5 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2019 Anata (creator) and Ramon Santamaria (review) (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#if defined(PLATFORM_DESKTOP)
+ #define GLSL_VERSION 330
+#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
+ #define GLSL_VERSION 100
+#endif
+
+// -------------------------------------------------------------------------------------------------------------
+// Main Entry point
+// -------------------------------------------------------------------------------------------------------------
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [shaders] example - texture waves");
+
+ // Load space texture to apply shaders
+ Texture2D space = LoadTexture("resources/space.png");
+
+ // Load shader and setup location points and values
+ Shader wave = LoadShader(0, FormatText("resources/shaders/glsl%i/wave.fs", GLSL_VERSION));
+
+ float screenSizeLoc = GetShaderLocation(wave, "size");
+ float secondsLoc = GetShaderLocation(wave, "secondes");
+ float freqXLoc = GetShaderLocation(wave, "freqX");
+ float freqYLoc = GetShaderLocation(wave, "freqY");
+ float ampXLoc = GetShaderLocation(wave, "ampX");
+ float ampYLoc = GetShaderLocation(wave, "ampY");
+ float speedXLoc = GetShaderLocation(wave, "speedX");
+ float speedYLoc = GetShaderLocation(wave, "speedY");
+
+ float screenSize[2] = { 800, 450 };
+
+ // Shader uniform values that can be updated at any time
+ float freqX = 25.0f;
+ float freqY = 25.0f;
+ float ampX = 5.0f;
+ float ampY = 5.0f;
+ float speedX = 8.0f;
+ float speedY = 8.0f;
+
+ SetShaderValue(wave, screenSizeLoc, &screenSize, UNIFORM_VEC2);
+ SetShaderValue(wave, freqXLoc, &freqX, UNIFORM_FLOAT);
+ SetShaderValue(wave, freqYLoc, &freqY, UNIFORM_FLOAT);
+ SetShaderValue(wave, ampXLoc, &ampX, UNIFORM_FLOAT);
+ SetShaderValue(wave, ampYLoc, &ampY, UNIFORM_FLOAT);
+ SetShaderValue(wave, speedXLoc, &speedX, UNIFORM_FLOAT);
+ SetShaderValue(wave, speedYLoc, &speedY, UNIFORM_FLOAT);
+
+ float seconds = 0.0f;
+
+ SetTargetFPS(60);
+ // -------------------------------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ seconds += GetFrameTime();
+
+ SetShaderValue(wave, secondsLoc, &seconds, UNIFORM_FLOAT);
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ BeginShaderMode(wave);
+
+ DrawTexture(space, 0, 0, WHITE);
+ DrawTexture(space, space.width, 0, WHITE);
+
+ EndShaderMode();
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ UnloadShader(wave); // Unload shader
+ UnloadTexture(space); // Unload texture
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}
diff --git a/examples/shaders/shaders_texture_waves.png b/examples/shaders/shaders_texture_waves.png
new file mode 100644
index 00000000..99781a17
--- /dev/null
+++ b/examples/shaders/shaders_texture_waves.png
Binary files differ