aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2015-05-04 23:46:31 +0200
committerraysan5 <raysan5@gmail.com>2015-05-04 23:46:31 +0200
commiteae98e1c34512579d69966c99713bd0c45bfcb50 (patch)
tree86b224238a9a017d45e5267b59f755b1c6dfbd1a /examples
parentba257b09f55f240ec48200383fe49ca4bf3e1cab (diff)
downloadraylib-eae98e1c34512579d69966c99713bd0c45bfcb50.tar.gz
raylib-eae98e1c34512579d69966c99713bd0c45bfcb50.zip
Big batch of changes, check description:
- Camera system moved to a separate module [camera.c] - WIP: Added customization functions for camera controls - Added custom shaders support on batch drawing - Complete redesign of textures module to support multiple texture formats (compressed and uncompressed)
Diffstat (limited to 'examples')
-rw-r--r--examples/models_custom_shader.c86
-rw-r--r--examples/resources/shaders/base.vs19
-rw-r--r--examples/resources/shaders/custom.fs16
-rw-r--r--examples/resources/shaders/custom.vs16
-rw-r--r--examples/resources/shaders/grayscale.fs15
5 files changed, 152 insertions, 0 deletions
diff --git a/examples/models_custom_shader.c b/examples/models_custom_shader.c
new file mode 100644
index 00000000..5430ed65
--- /dev/null
+++ b/examples/models_custom_shader.c
@@ -0,0 +1,86 @@
+/*******************************************************************************************
+*
+* raylib [models] example - Load and draw a 3d model (OBJ)
+*
+* This example has been created using raylib 1.0 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ int screenWidth = 1280;
+ int screenHeight = 720;
+
+ InitWindow(screenWidth, screenHeight, "raylib [models] example - custom shader");
+
+ // Define the camera to look into our 3d world
+ Camera camera = {{ 10.0, 8.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }};
+
+ Texture2D texture = LoadTexture("resources/catsham.png"); // Load model texture
+ Shader shader = LoadShader("resources/shaders/custom.vs", "resources/shaders/custom.fs");
+ //Shader poste = LoadShader("resources/shaders/custom.vs", "resources/shaders/pixel.fs");
+
+ Model cat = LoadModel("resources/cat.obj"); // Load OBJ model
+
+ SetModelTexture(&cat, texture); // Bind texture to model
+ //SetModelShader(&cat, poste);
+
+ Vector3 catPosition = { 0.0, 0.0, 0.0 }; // Set model position
+
+ SetPostproShader(shader);
+
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyDown(KEY_LEFT)) catPosition.x -= 0.2;
+ if (IsKeyDown(KEY_RIGHT)) catPosition.x += 0.2;
+ if (IsKeyDown(KEY_UP)) catPosition.z -= 0.2;
+ if (IsKeyDown(KEY_DOWN)) catPosition.z += 0.2;
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ Begin3dMode(camera);
+
+ DrawModel(cat, catPosition, 0.1f, WHITE); // Draw 3d model with texture
+
+ DrawGrid(10.0, 1.0); // Draw a grid
+
+ DrawGizmo(catPosition); // Draw gizmo
+
+ End3dMode();
+
+ DrawFPS(10, 10);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ UnloadTexture(texture); // Unload texture
+ UnloadModel(cat); // Unload model
+ UnloadShader(shader);
+ //UnloadShader(poste);
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+} \ No newline at end of file
diff --git a/examples/resources/shaders/base.vs b/examples/resources/shaders/base.vs
new file mode 100644
index 00000000..78e543b7
--- /dev/null
+++ b/examples/resources/shaders/base.vs
@@ -0,0 +1,19 @@
+#version 110
+
+attribute vec3 vertexPosition;
+attribute vec2 vertexTexCoord;
+attribute vec4 vertexColor;
+
+uniform mat4 projectionMatrix;
+uniform mat4 modelviewMatrix;
+
+varying vec2 fragTexCoord;
+varying vec4 fragColor;
+
+void main()
+{
+ fragTexCoord = vertexTexCoord;
+ fragColor = vertexColor;
+
+ gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+} \ No newline at end of file
diff --git a/examples/resources/shaders/custom.fs b/examples/resources/shaders/custom.fs
new file mode 100644
index 00000000..1e53933b
--- /dev/null
+++ b/examples/resources/shaders/custom.fs
@@ -0,0 +1,16 @@
+#version 330
+
+uniform sampler2D texture0;
+varying vec2 fragTexCoord;
+
+uniform vec4 tintColor;
+
+void main()
+{
+ vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+
+ // Convert to grayscale using NTSC conversion weights
+ float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
+
+ gl_FragColor = vec4(gray, gray, gray, tintColor.a);
+} \ No newline at end of file
diff --git a/examples/resources/shaders/custom.vs b/examples/resources/shaders/custom.vs
new file mode 100644
index 00000000..629c954d
--- /dev/null
+++ b/examples/resources/shaders/custom.vs
@@ -0,0 +1,16 @@
+#version 330
+
+attribute vec3 vertexPosition;
+attribute vec2 vertexTexCoord;
+attribute vec3 vertexNormal;
+
+uniform mat4 projectionMatrix;
+uniform mat4 modelviewMatrix;
+
+varying vec2 fragTexCoord;
+
+void main()
+{
+ fragTexCoord = vertexTexCoord;
+ gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+} \ No newline at end of file
diff --git a/examples/resources/shaders/grayscale.fs b/examples/resources/shaders/grayscale.fs
new file mode 100644
index 00000000..1b778871
--- /dev/null
+++ b/examples/resources/shaders/grayscale.fs
@@ -0,0 +1,15 @@
+#version 110
+
+uniform sampler2D texture0;
+varying vec2 fragTexCoord;
+varying vec4 fragColor;
+
+void main()
+{
+ vec4 base = texture2D(texture0, fragTexCoord)*fragColor;
+
+ // Convert to grayscale using NTSC conversion weights
+ float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
+
+ gl_FragColor = vec4(gray, gray, gray, base.a);
+} \ No newline at end of file