feat(shaders_lab): scaffold C++ app with GLSL live-reload canvas
- cpp/functions/gfx: gl_shader, gl_framebuffer, fullscreen_quad, shader_canvas - cpp/apps/shaders_lab: main + 3 seed shaders (plasma, circle, checker) - ImGui docking layout: Code | Canvas | Controls Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: shaders_lab
|
||||
lang: cpp
|
||||
domain: gfx
|
||||
description: "Live GLSL fragment shader editor con preview en tiempo real. Layout de 3 paneles: editor de código, canvas de preview y controles."
|
||||
tags: [gui, shaders, opengl, glsl, imgui]
|
||||
uses_functions:
|
||||
- gl_shader_cpp_gfx
|
||||
- gl_framebuffer_cpp_gfx
|
||||
- fullscreen_quad_cpp_gfx
|
||||
- shader_canvas_cpp_gfx
|
||||
- fps_overlay_cpp_core
|
||||
uses_types: []
|
||||
framework: "imgui + opengl3"
|
||||
entry_point: "cpp/build/linux/apps/shaders_lab/shaders_lab"
|
||||
dir_path: "cpp/apps/shaders_lab"
|
||||
---
|
||||
|
||||
## Descripción
|
||||
|
||||
Editor interactivo de fragment shaders GLSL con preview en tiempo real. Incluye 3 presets (Plasma, Circle, Checker) y recompila automáticamente con debounce de 250ms al editar el código.
|
||||
|
||||
## Layout
|
||||
|
||||
- **Code** (izquierda): editor de texto con botones de preset y footer de errores de compilación
|
||||
- **Canvas** (centro): preview del shader renderizado a FBO y mostrado via ImGui::Image
|
||||
- **Controls** (derecha): placeholder para fase 2 + FPS overlay
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
./fn run build_cpp_linux_bash_infra shaders_lab
|
||||
```
|
||||
|
||||
Binario: `cpp/build/linux/apps/shaders_lab/shaders_lab`
|
||||
|
||||
## Uniforms disponibles en los shaders
|
||||
|
||||
- `u_resolution`: vec2 — dimensiones del canvas en pixels
|
||||
- `u_time`: float — segundos desde inicio de la app (ImGui::GetTime())
|
||||
- `u_mouse`: vec2 — posición del mouse relativa al canvas, origen bottom-left
|
||||
|
||||
## Notas
|
||||
|
||||
No requiere dependencias externas más allá de lo ya vendorizado (GLFW, ImGui, OpenGL). Los fragment shaders se escriben sin `#version`, sin `out vec4 fragColor` ni declaraciones de uniforms — `compile_fragment()` los prepende automáticamente.
|
||||
Reference in New Issue
Block a user