From 8bbebe612754d25d12ca27427f2add157e2c6049 Mon Sep 17 00:00:00 2001 From: luis605 Date: Tue, 26 Sep 2023 18:54:33 +0100 Subject: [PATCH 1/2] Texture Tiling Example - luis605 --- .../resources/shaders/glsl330/tiling.fs | 14 +++ examples/shaders/shader_texture_tiling.c | 95 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 examples/shaders/resources/shaders/glsl330/tiling.fs create mode 100644 examples/shaders/shader_texture_tiling.c diff --git a/examples/shaders/resources/shaders/glsl330/tiling.fs b/examples/shaders/resources/shaders/glsl330/tiling.fs new file mode 100644 index 000000000000..6e7f5243475f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl330/tiling.fs @@ -0,0 +1,14 @@ +#version 330 core + +uniform sampler2D diffuseMap; +uniform vec2 tiling; + +in vec2 fragTexCoord; + +out vec4 fragColor; + +void main() +{ + vec2 texCoord = fragTexCoord * tiling; + fragColor = texture(diffuseMap, texCoord); +} diff --git a/examples/shaders/shader_texture_tiling.c b/examples/shaders/shader_texture_tiling.c new file mode 100644 index 000000000000..2b380280cdef --- /dev/null +++ b/examples/shaders/shader_texture_tiling.c @@ -0,0 +1,95 @@ +/******************************************************************************************* +* +* raylib [textures] example - Texture Tiling +* +* Example demonstrates how to tile a texture on a 3D model using raylib. +* +* Example contributed by Luís Almeida (https://github.com/luis605) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2023 Luís Almeida (https://github.com/luis605) +* +********************************************************************************************/ + +#include "raylib.h" + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ + +int main(void) +{ + SetTraceLogLevel(LOG_WARNING); + const int screenWidth = 800; + const int screenHeight = 600; + + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "Raylib Texture Tiling"); + + SetTargetFPS(60); + + // Load a texture + Texture2D texture = LoadTexture("resources/raylib_logo.png"); + + // Create a cube mesh + Mesh cube = GenMeshCube(1.0f, 1.0f, 1.0f); + + // Load the texture onto the GPU + Model model = LoadModelFromMesh(cube); + model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; + + // Set the tiling of the texture + float tiling[2] = {3.0f, 3.0f}; + Shader shader = LoadShader(0, "resources/shaders/glsl330/tiling.fs"); // Create a custom shader in a .glsl file + SetShaderValue(shader, GetShaderLocation(shader, "tiling"), tiling, SHADER_UNIFORM_VEC2); + model.materials[0].shader = shader; + + // Camera setup + Camera camera = { 0 }; + camera.position = (Vector3){ 3.0f, 3.0f, 3.0f }; + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; + camera.fovy = 45.0f; + camera.projection = CAMERA_PERSPECTIVE; + + // Main game loop + while (!WindowShouldClose()) + { + // Update + //---------------------------------------------------------------------------------- + + BeginDrawing(); + ClearBackground(RAYWHITE); + UpdateCamera(&camera, CAMERA_FREE); + + // Draw the model + { + BeginMode3D(camera); + BeginShaderMode(shader); + + DrawModel(model, (Vector3){ 0.0f, 0.0f, 0.0f }, 5.0f, WHITE); + + EndShaderMode(); + EndMode3D(); + } + + DrawText("Use mouse to rotate the camera", 10, 10, 20, DARKGRAY); + + EndDrawing(); + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + + UnloadTexture(texture); // Unload texture + UnloadModel(model); // Unload model + UnloadShader(shader); // Unload shader + + + CloseWindow(); // Close window and OpenGL context + + return 0; +} From c1407955da23c8d2b6b727f74c4e0ce4cb1e4014 Mon Sep 17 00:00:00 2001 From: luis605 Date: Tue, 26 Sep 2023 21:22:23 +0100 Subject: [PATCH 2/2] Removed SetTraceLogLevel(LOG_WARNING); --- examples/shaders/shader_texture_tiling.c | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/shaders/shader_texture_tiling.c b/examples/shaders/shader_texture_tiling.c index 2b380280cdef..868d6b8f12bb 100644 --- a/examples/shaders/shader_texture_tiling.c +++ b/examples/shaders/shader_texture_tiling.c @@ -21,7 +21,6 @@ int main(void) { - SetTraceLogLevel(LOG_WARNING); const int screenWidth = 800; const int screenHeight = 600;