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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 z%0A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 Q1_lNOPgg&ebxsLQ0Iw_X6#xJL literal 0 HcmV?d00001 diff --git a/projects/VS2022/examples/shaders_mandelbrot_set.vcxproj b/projects/VS2022/examples/shaders_mandelbrot_set.vcxproj new file mode 100644 index 000000000..4ed5581e1 --- /dev/null +++ b/projects/VS2022/examples/shaders_mandelbrot_set.vcxproj @@ -0,0 +1,569 @@ + + + + + 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