From aeafce5db4a8b52371882f33dcd5f4ffacbaecac Mon Sep 17 00:00:00 2001 From: JordSant <77529699+JordSant@users.noreply.github.com> Date: Sat, 18 Oct 2025 19:50:52 +0200 Subject: [PATCH] [examples] Added: `shaders_mandelbrot_set` (#5282) * [examples] Added: `shaders_mandelbrot_set` * Simplified shader code and added comments * Comments starting with a capital letter, and some minor fixes to adhere to the convention --- .../shaders/glsl100/mandelbrot_set.fs | 61 ++ .../shaders/glsl120/mandelbrot_set.fs | 59 ++ .../shaders/glsl330/mandelbrot_set.fs | 58 ++ examples/shaders/shaders_mandelbrot_set.c | 224 +++++++ examples/shaders/shaders_mandelbrot_set.png | Bin 0 -> 71902 bytes .../examples/shaders_mandelbrot_set.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 2 + 7 files changed, 973 insertions(+) create mode 100644 examples/shaders/resources/shaders/glsl100/mandelbrot_set.fs create mode 100644 examples/shaders/resources/shaders/glsl120/mandelbrot_set.fs create mode 100644 examples/shaders/resources/shaders/glsl330/mandelbrot_set.fs create mode 100644 examples/shaders/shaders_mandelbrot_set.c create mode 100644 examples/shaders/shaders_mandelbrot_set.png create mode 100644 projects/VS2022/examples/shaders_mandelbrot_set.vcxproj diff --git a/examples/shaders/resources/shaders/glsl100/mandelbrot_set.fs b/examples/shaders/resources/shaders/glsl100/mandelbrot_set.fs new file mode 100644 index 000000000..aab8514e8 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl100/mandelbrot_set.fs @@ -0,0 +1,61 @@ +#version 100 + +#define PI 3.1415926535897932384626433832795 + +precision highp float; + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale +// NOTE: Maximum number of shader for-loop iterations depend on GPU, +// For example, on RasperryPi for this examply only supports up to 60 +uniform int maxIterations; // Max iterations per pixel + +const float max = 4.0; // We consider infinite as 4.0: if a point reaches a distance of 4.0 it will escape to infinity +const float max2 = max*max; // Square of max to avoid computing square root + +void main() +{ + // The pixel coordinates are scaled so they are on the mandelbrot scale + // NOTE: fragTexCoord already comes as normalized screen coordinates but offset must be normalized before scaling and zoom + vec2 c = vec2((fragTexCoord.x - 0.5)*2.5, (fragTexCoord.y - 0.5)*1.5)/zoom; + c.x += offset.x; + c.y += offset.y; + float a = 0.0; + float b = 0.0; + + // The Mandelbrot set is a two-dimensional set defined in the complex plane on which the iteration of the function + // Fc(z) = z^2 + c on the complex numbers c from the plane does not diverge to infinity starting at z = 0 + // Here: z = a + bi. Iterations: z -> z^2 + c = (a + bi)^2 + (c.x + c.yi) = (a^2 - b^2 + c.x) + (2ab + c.y)i + + int iter = 0; + while (iter < maxIterations) + { + float aa = a*a; + float bb = b*b; + if (aa + bb > max2) + break; + + float twoab = 2.0*a*b; + a = aa - bb + c.x; + b = twoab + c.y; + + ++iter; + } + + if (iter >= maxIterations) + { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + else + { + float normR = float(iter - (iter/55)*55)/55.0; + float normG = float(iter - (iter/69)*69)/69.0; + float normB = float(iter - (iter/40)*40)/40.0; + + gl_FragColor = vec4(sin(normR*PI), sin(normG*PI), sin(normB*PI), 1.0); + } +} diff --git a/examples/shaders/resources/shaders/glsl120/mandelbrot_set.fs b/examples/shaders/resources/shaders/glsl120/mandelbrot_set.fs new file mode 100644 index 000000000..5da3ef437 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/mandelbrot_set.fs @@ -0,0 +1,59 @@ +#version 120 + +#define PI 3.1415926535897932384626433832795 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale +// NOTE: Maximum number of shader for-loop iterations depend on GPU, +// For example, on RasperryPi for this examply only supports up to 60 +uniform int maxIterations; // Max iterations per pixel + +const float max = 4.0; // We consider infinite as 4.0: if a point reaches a distance of 4.0 it will escape to infinity +const float max2 = max*max; // Square of max to avoid computing square root + +void main() +{ + // The pixel coordinates are scaled so they are on the mandelbrot scale + // NOTE: fragTexCoord already comes as normalized screen coordinates but offset must be normalized before scaling and zoom + vec2 c = vec2((fragTexCoord.x - 0.5)*2.5, (fragTexCoord.y - 0.5)*1.5)/zoom; + c.x += offset.x; + c.y += offset.y; + float a = 0.0; + float b = 0.0; + + // The Mandelbrot set is a two-dimensional set defined in the complex plane on which the iteration of the function + // Fc(z) = z^2 + c on the complex numbers c from the plane does not diverge to infinity starting at z = 0 + // Here: z = a + bi. Iterations: z -> z^2 + c = (a + bi)^2 + (c.x + c.yi) = (a^2 - b^2 + c.x) + (2ab + c.y)i + + int iter = 0; + while (iter < maxIterations) + { + float aa = a*a; + float bb = b*b; + if (aa + bb > max2) + break; + + float twoab = 2.0*a*b; + a = aa - bb + c.x; + b = twoab + c.y; + + ++iter; + } + + if (iter >= maxIterations) + { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + else + { + float normR = float(iter - (iter/55)*55)/55.0; + float normG = float(iter - (iter/69)*69)/69.0; + float normB = float(iter - (iter/40)*40)/40.0; + + gl_FragColor = vec4(sin(normR*PI), sin(normG*PI), sin(normB*PI), 1.0); + } +} diff --git a/examples/shaders/resources/shaders/glsl330/mandelbrot_set.fs b/examples/shaders/resources/shaders/glsl330/mandelbrot_set.fs new file mode 100644 index 000000000..bde74565f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl330/mandelbrot_set.fs @@ -0,0 +1,58 @@ +#version 330 + +#define PI 3.1415926535897932384626433832795 + +// Input vertex attributes (from vertex shader) +in vec2 fragTexCoord; +in vec4 fragColor; + +// Output fragment color +out vec4 finalColor; + +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale +uniform int maxIterations; // Max iterations per pixel + +const float max = 4.0; // We consider infinite as 4.0: if a point reaches a distance of 4.0 it will escape to infinity +const float max2 = max*max; // Square of max to avoid computing square root + +void main() +{ + // The pixel coordinates are scaled so they are on the mandelbrot scale + // NOTE: fragTexCoord already comes as normalized screen coordinates but offset must be normalized before scaling and zoom + vec2 c = vec2((fragTexCoord.x - 0.5)*2.5, (fragTexCoord.y - 0.5)*1.5)/zoom; + c.x += offset.x; + c.y += offset.y; + float a = 0.0; + float b = 0.0; + + // The Mandelbrot set is a two-dimensional set defined in the complex plane on which the iteration of the function + // Fc(z) = z^2 + c on the complex numbers c from the plane does not diverge to infinity starting at z = 0 + // Here: z = a + bi. Iterations: z -> z^2 + c = (a + bi)^2 + (c.x + c.yi) = (a^2 - b^2 + c.x) + (2ab + c.y)i + + int iter = 0; + for (iter = 0; iter < maxIterations; ++iter) + { + float aa = a*a; + float bb = b*b; + if (aa + bb > max2) + break; + + float twoab = 2.0*a*b; + a = aa - bb + c.x; + b = twoab + c.y; + } + + if (iter >= maxIterations) + { + finalColor = vec4(0.0, 0.0, 0.0, 1.0); + } + else + { + float normR = float(iter%55)/55.0; + float normG = float(iter%69)/69.0; + float normB = float(iter%40)/40.0; + + finalColor = vec4(sin(normR*PI), sin(normG*PI), sin(normB*PI), 1.0); + } +} diff --git a/examples/shaders/shaders_mandelbrot_set.c b/examples/shaders/shaders_mandelbrot_set.c new file mode 100644 index 000000000..c8d0ce8d3 --- /dev/null +++ b/examples/shaders/shaders_mandelbrot_set.c @@ -0,0 +1,224 @@ +/******************************************************************************************* +* +* raylib [shaders] example - mandelbrot set +* +* Example complexity rating: [★★★☆] 3/4 +* +* 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) +* +* Example originally created with raylib 5.6, last time updated with raylib 5.6 +* +* Example contributed by Jordi Santonja (@JordSant) +* Based on previous work by Josh Colclough (@joshcol9232) +* +* 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) 2025 Jordi Santonja (@JordSant) +* +********************************************************************************************/ + +#include "raylib.h" +#include + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +// A few good interesting places +const float pointsOfInterest[6][3] = +{ + { -1.76826775f, -0.00422996283f, 28435.9238f }, + { 0.322004497f, -0.0357099883f, 56499.7266f }, + { -0.748880744f, -0.0562955774f, 9237.59082f }, + { -1.78385007f, -0.0156200649f, 14599.5283f }, + { -0.0985441282f, -0.924688697f, 26259.8535f }, + { 0.317785531f, -0.0322612226f, 29297.9258f }, +}; + +const int screenWidth = 800; +const int screenHeight = 450; +const float zoomSpeed = 1.01f; +const float offsetSpeedMul = 2.0f; + +const float startingZoom = 0.6f; +const float startingOffset[2] = { -0.5f, 0.0f }; + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - mandelbrot set"); + + // Load mandelbrot set shader + // NOTE: Defining 0 (NULL) for vertex shader forces usage of internal default vertex shader + Shader shader = LoadShader(0, TextFormat("resources/shaders/glsl%i/mandelbrot_set.fs", GLSL_VERSION)); + + // Create a RenderTexture2D to be used for render to texture + RenderTexture2D target = LoadRenderTexture(GetScreenWidth(), GetScreenHeight()); + + // Offset and zoom to draw the mandelbrot set at. (centered on screen and default size) + float offset[2] = { startingOffset[0], startingOffset[1] }; + float zoom = startingZoom; + // Depending on the zoom the mximum number of iterations must be adapted to get more detail as we zzoom in + // The solution is not perfect, so a control has been added to increase/decrease the number of iterations with UP/DOWN keys + int maxIterations = 333; + float maxIterationsMultiplier = 166.5f; + + // Get variable (uniform) locations on the shader to connect with the program + // NOTE: If uniform variable could not be found in the shader, function returns -1 + int zoomLoc = GetShaderLocation(shader, "zoom"); + int offsetLoc = GetShaderLocation(shader, "offset"); + int maxIterationsLoc = GetShaderLocation(shader, "maxIterations"); + + // Upload the shader uniform values! + SetShaderValue(shader, zoomLoc, &zoom, SHADER_UNIFORM_FLOAT); + SetShaderValue(shader, offsetLoc, offset, SHADER_UNIFORM_VEC2); + SetShaderValue(shader, maxIterationsLoc, &maxIterations, SHADER_UNIFORM_INT); + + bool showControls = true; // Show controls + + 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 + //---------------------------------------------------------------------------------- + bool updateShader = false; + + // Press [1 - 6] to reset c to a point of interest + if (IsKeyPressed(KEY_ONE) || + IsKeyPressed(KEY_TWO) || + IsKeyPressed(KEY_THREE) || + IsKeyPressed(KEY_FOUR) || + IsKeyPressed(KEY_FIVE) || + IsKeyPressed(KEY_SIX)) + { + int interestIndex = 0; + if (IsKeyPressed(KEY_ONE)) interestIndex = 0; + else if (IsKeyPressed(KEY_TWO)) interestIndex = 1; + else if (IsKeyPressed(KEY_THREE)) interestIndex = 2; + else if (IsKeyPressed(KEY_FOUR)) interestIndex = 3; + else if (IsKeyPressed(KEY_FIVE)) interestIndex = 4; + else if (IsKeyPressed(KEY_SIX)) interestIndex = 5; + + offset[0] = pointsOfInterest[interestIndex][0]; + offset[1] = pointsOfInterest[interestIndex][1]; + zoom = pointsOfInterest[interestIndex][2]; + updateShader = true; + } + + // If "R" is pressed, reset zoom and offset + if (IsKeyPressed(KEY_R)) + { + offset[0] = startingOffset[0]; + offset[1] = startingOffset[1]; + zoom = startingZoom; + updateShader = true; + } + + if (IsKeyPressed(KEY_F1)) showControls = !showControls; // Toggle whether or not to show controls + + // Change number of max iterations with UP and DOWN keys + // WARNING: Increasing the number of max iterations greatly impacts performance + if (IsKeyPressed(KEY_UP)) + { + maxIterationsMultiplier *= 1.4f; + updateShader = true; + } + else if (IsKeyPressed(KEY_DOWN)) + { + maxIterationsMultiplier /= 1.4f; + updateShader = true; + } + + // If either left or right button is pressed, zoom in/out + if (IsMouseButtonDown(MOUSE_BUTTON_LEFT) || IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) + { + // Change zoom. If Mouse left -> zoom in. Mouse right -> zoom out + zoom *= IsMouseButtonDown(MOUSE_BUTTON_LEFT)? zoomSpeed : (1.0f/zoomSpeed); + + const Vector2 mousePos = GetMousePosition(); + Vector2 offsetVelocity; + // Find the velocity at which to change the camera. Take the distance of the mouse + // From the center of the screen as the direction, and adjust magnitude based on the current zoom + offsetVelocity.x = (mousePos.x/(float)screenWidth - 0.5f)*offsetSpeedMul/zoom; + offsetVelocity.y = (mousePos.y/(float)screenHeight - 0.5f)*offsetSpeedMul/zoom; + + // Apply move velocity to camera + offset[0] += GetFrameTime()*offsetVelocity.x; + offset[1] += GetFrameTime()*offsetVelocity.y; + + updateShader = true; + } + + // In case a parameter has been changed, update the shader values + if (updateShader) + { + // As we zoom in, increase the number of max iterations to get more detail + // Aproximate formula, but it works-ish + maxIterations = (int)(sqrtf(2.0f*sqrtf(fabsf(1.0f - sqrtf(37.5f*zoom))))*maxIterationsMultiplier); + + // Update the shader uniform values! + SetShaderValue(shader, zoomLoc, &zoom, SHADER_UNIFORM_FLOAT); + SetShaderValue(shader, offsetLoc, offset, SHADER_UNIFORM_VEC2); + SetShaderValue(shader, maxIterationsLoc, &maxIterations, SHADER_UNIFORM_INT); + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + // Using a render texture to draw Mandelbrot set + BeginTextureMode(target); // Enable drawing to texture + ClearBackground(BLACK); // Clear the render texture + + // Draw a rectangle in shader mode to be used as shader canvas + // NOTE: Rectangle uses font white character texture coordinates, + // So shader can not be applied here directly because input vertexTexCoord + // Do not represent full screen coordinates (space where want to apply shader) + DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), BLACK); + EndTextureMode(); + + BeginDrawing(); + ClearBackground(BLACK); // Clear screen background + + // Draw the saved texture and rendered mandelbrot set with shader + // NOTE: We do not invert texture on Y, already considered inside shader + BeginShaderMode(shader); + // WARNING: If FLAG_WINDOW_HIGHDPI is enabled, HighDPI monitor scaling should be considered + // When rendering the RenderTexture2D to fit in the HighDPI scaled Window + DrawTextureEx(target.texture, (Vector2){ 0.0f, 0.0f }, 0.0f, 1.0f, WHITE); + EndShaderMode(); + + if (showControls) + { + DrawText("Press Mouse buttons right/left to zoom in/out and move", 10, 15, 10, RAYWHITE); + DrawText("Press F1 to toggle these controls", 10, 30, 10, RAYWHITE); + DrawText("Press [1 - 6] to change point of interest", 10, 45, 10, RAYWHITE); + DrawText("Press UP | DOWN to change number of iterations", 10, 60, 10, RAYWHITE); + DrawText("Press R to recenter the camera", 10, 75, 10, RAYWHITE); + } + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadShader(shader); // Unload shader + UnloadRenderTexture(target); // Unload render texture + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/shaders/shaders_mandelbrot_set.png b/examples/shaders/shaders_mandelbrot_set.png new file mode 100644 index 0000000000000000000000000000000000000000..6d112931d3a3b23a6cae48f6319b495164280359 GIT binary patch literal 71902 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%0D+lk`?xeW~R>$ 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 + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6} + Win32Proj + shaders_mandelbrot_set + 10.0 + shaders_mandelbrot_set + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index d0a886a4f..ef46f8fe1 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -393,6 +393,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_screen_recording", "ex EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_text_file_loading", "examples\core_text_file_loading.vcxproj", "{2F578155-D51F-4C03-AB7F-5C5122CA46CC}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mandelbrot_set", "examples\shaders_mandelbrot_set.vcxproj", "{1C829D1A-892C-451C-AF0B-AC65C85F5CC6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64