Actualizar README.md
This commit is contained in:
89
README.md
89
README.md
@@ -1,79 +1,162 @@
|
||||
# Shadertoy SDL3 + OpenGL
|
||||
|
||||
# Shadertoy
|
||||
|
||||
|
||||
|
||||
Proyecto minimal para ejecutar fragment shaders tipo Shadertoy usando SDL3 + GLAD + OpenGL 3.3.
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
|
||||
## Uso
|
||||
|
||||
Por defecto el ejecutable carga shaders/test.frag.glsl.
|
||||
|
||||
|
||||
|
||||
Ejecutar en ventana:
|
||||
|
||||
./shadertoy_sdl3 ../shaders/test.frag.glsl
|
||||
|
||||
|
||||
|
||||
Ejecutar en fullscreen nativo:
|
||||
|
||||
./shadertoy_sdl3 -F ../shaders/test.frag.glsl
|
||||
|
||||
|
||||
|
||||
Si ejecutas desde la raíz del repo:
|
||||
|
||||
./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;
|
||||
|
||||
- Función de entrada esperada (opcional, el main llama a mainImage):
|
||||
|
||||
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
|
||||
|
||||
- ./<ruta>
|
||||
|
||||
- ../<ruta>
|
||||
|
||||
- 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 <SDL3/SDL.h>) 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.
|
||||
Reference in New Issue
Block a user