From b4d7ae8045fb65085bdbace8b60a6627175a77b3 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 21 Oct 2025 19:37:55 +0200 Subject: [PATCH] Actualizar README.md --- README.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 99 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 24c7864..19ef134 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,162 @@ -# Shadertoy SDL3 + OpenGL + +# Shadertoy + + Proyecto minimal para ejecutar fragment shaders tipo Shadertoy usando SDL3 + GLAD + OpenGL 3.3. + + +![Shadertoy - Gameplay](https://php.sustancia.synology.me/images/shadertoy/shadertoy01.png) + + + ## Estructura + - src/ — código fuente C++ (incluye main.cpp). + - shaders/ — shaders fragment (.frag.glsl) que se cargan en runtime. + - third_party/glad/ — glad.c + headers. + - CMakeLists.txt — configuración de build. + - .gitignore — recomendado. + + ## Requisitos + - CMake >= 3.16 + - Compilador con soporte C++17 + - SDL3 development headers and library + - GL loader (GLAD) incluido en third_party/glad o disponible en el sistema + + Instalación típica: + - Debian/Ubuntu: - sudo apt install build-essential cmake libsdl3-dev + +sudo apt install build-essential cmake libsdl3-dev + - macOS (Homebrew): - brew install cmake sdl3 + +brew install cmake sdl3 + + ## Build - mkdir build - cd build - cmake .. - cmake --build . --config Release + + mkdir build + + cd build + + cmake .. + + cmake --build . --config Release + + ## Uso + Por defecto el ejecutable carga shaders/test.frag.glsl. + + Ejecutar en ventana: - ./shadertoy_sdl3 ../shaders/test.frag.glsl + + ./shadertoy_sdl3 ../shaders/test.frag.glsl + + Ejecutar en fullscreen nativo: - ./shadertoy_sdl3 -F ../shaders/test.frag.glsl + + ./shadertoy_sdl3 -F ../shaders/test.frag.glsl + + Si ejecutas desde la raíz del repo: - ./build/shadertoy_sdl3 shaders/frag_tile_iter.frag.glsl + + ./build/shadertoy_sdl3 shaders/frag_tile_iter.frag.glsl + + Atajos en ejecución + - Escape — salir. + - F11 — alternar fullscreen desktop. + + ## Formato de shader esperado + - #version 330 core + - Debe declarar: - uniform vec2 iResolution; - uniform float iTime; - in vec2 vUV; - out vec4 FragColor; + + uniform vec2 iResolution; + + uniform float iTime; + + in vec2 vUV; + + out vec4 FragColor; + - Función de entrada esperada (opcional, el main llama a mainImage): - void mainImage(out vec4 fragColor, in vec2 fragCoord); + + void mainImage(out vec4 fragColor, in vec2 fragCoord); + - main() debe convertir vUV a fragCoord y llamar a mainImage. + + ## Rutas y ejecución + El ejecutable intenta varias rutas relativas para localizar el shader: + - ruta tal cual pasada en argv + - ./ + - ../ + - relativo al directorio del ejecutable + + Si obtienes "Failed to load fragment shader file", ejecuta desde la carpeta build o pasa la ruta correcta a tu shader. + + ## Multi-pass / Buffers (nota) + Ejemplo actual es single-pass. Para portar Shadertoy con BufferA/B/C necesitas: + - crear FBOs y textures por buffer + - renderizar buffers en orden y pasar las texturas como iChannelN a pases posteriores + - evitar leer y escribir la misma textura (usar ping-pong si hace falta) + + ## Troubleshooting + - SDL_Init devuelve error vacío: asegúrate que SDL3.dll (Windows) está en el mismo directorio que el ejecutable o en PATH. + - Errores de compilación/constantes: verifica que usas SDL3 headers (#include ) y no SDL2. + - Shaders que fallan a compilar: revisa glGetShaderInfoLog en la salida; versiones GLSL y funciones incompatibles son la causa habitual. + + ## Licencia y créditos + - Código de ejemplo: libre para uso personal y adaptación. -- Respeta créditos de shaders copiados de Shadertoy/otros autores cuando los reutilices. + +- Respeta créditos de shaders copiados de Shadertoy/otros autores cuando los reutilices. \ No newline at end of file