init:
Se ejecuta una vez por píxel. Define aquí el valor inicial de la órbita y cualquier variable auxiliar.
Aprende el subconjunto FRM probado de FractalPark, entiende cómo el código fuente se convierte en un shader de GPU y construye tres fórmulas funcionales a partir de los mismos ejemplos que usa el editor.
FRM es una forma compacta y basada en texto de describir un fractal iterativo. Una fórmula nombra su estado inicial, el cálculo que se repite para cada órbita y la condición que decide si la iteración continúa.
El formato nació del ecosistema de Fractint, donde los archivos de fórmulas permitían intercambiar experimentos sin reconstruir el programa de renderizado. FractalPark lleva esa idea de autoría a un flujo de trabajo en el navegador, documentando su propio subconjunto probado en lugar de reclamar compatibilidad completa.
Para los orígenes y la historia del proyecto en general, consulta el sitio del proyecto Fractint.
FractalPark tokeniza, analiza, valida y compila un subconjunto deliberado de FRM. La tabla separa las construcciones que funcionan directamente, las que tienen semántica documentada de FractalPark y las que el flujo de trabajo actual no puede conservar.
| Nivel | Significado | Ámbito verificado |
|---|---|---|
| Compatible | Cubierto por las pruebas del compilador y utilizable sin una salvedad semántica. |
|
| Adaptado | Aceptado con una diferencia semántica documentada o como extensión de FractalPark. |
|
| No compatible | No se conserva con el compilador ni el flujo de archivos actual; se rechaza en lugar de reescribirse silenciosamente. |
|
Esta es una línea base de compatibilidad probada, no una afirmación de compatibilidad total con Fractint. Cuando el compilador cambie, esta matriz y sus pruebas deben cambiar juntas.
Estos recuentos de capacidades provienen del manifiesto versionado: 588 entradas objetivo comprenden 579 aprobaciones strict-v2 y 9 exenciones documentadas; 117 entradas independientes se excluyen con motivos estables.
Parámetros: p1, p2, p3, p4, p5 · Ranuras de función: fn1, fn2, fn3, fn4
Manifiesto de capacidades v1 · Semántica estricta v2
Una fórmula FRM de FractalPark tiene una declaración con nombre y tres secciones explícitas. Juntas definen la transición de estado para cada píxel.
Se ejecuta una vez por píxel. Define aquí el valor inicial de la órbita y cualquier variable auxiliar.
Se ejecuta una vez por iteración. Actualiza z y cualquier estado que necesite la siguiente iteración.
Devuelve la condición para continuar la órbita. Cuando se vuelve falsa, el punto ha escapado.
Los nombres de las secciones son estructurales, no comentarios: omitir o escribir mal uno produce un diagnóstico.
El lenguaje se mantiene deliberadamente pequeño: las expresiones describen aritmética compleja, las sentencias actualizan el estado de la órbita y el flujo de control selecciona entre actualizaciones.
FractalPark no pega texto FRM en un shader. Pasa el código fuente por un compilador por etapas para que la sintaxis, el significado, el código generado y los diagnósticos permanezcan conectados.
El texto exacto del editor, del pegado o del archivo local es la entrada autoritativa.
El lexer reconoce nombres, números, operadores, marcadores de sección, comentarios y directivas, conservando las ubicaciones del código fuente.
El analizador construye un árbol de fórmula estructurado y reporta declaraciones, expresiones y bloques de flujo de control malformados.
El validador revisa nombres, tipos, secciones y la semántica compatible antes de crear una fórmula canónica.
La generación de código emite funciones de shader y registra mapeos del GLSL generado de vuelta al código fuente FRM.
Una compilación exitosa se convierte en el mismo contrato de plugin de fórmula que usan el renderizador y el sistema de ensamblado de shaders.
El contrato compartido del compilador mantiene Explorar, el Editor independiente, las fórmulas personalizadas guardadas, los ejemplos y las pruebas en una sola ruta de implementación.
Estos ejemplos avanzan desde la fórmula cuadrática más pequeña hasta los parámetros y la retroalimentación con estado. Cada bloque de código se toma directamente del registro compartido de ejemplos y se compila durante las pruebas.
Lección 1
La fórmula de tiempo de escape más pequeña, útil para aprender primero la estructura init / loop / bailout.
Enfoque: la declaración y la estructura init / loop / bailout. Cambia el exponente o el umbral de escape solo después de que esta versión compile.
StarterBrot {
init:
z = 0
loop:
z = z^2 + c
bailout:
|z| < 4
}Lección 2
Demuestra los espacios de parámetros p1 / p2 y la diferencia entre cabs y |z|.
Enfoque: los espacios de parámetros p1 y p2, un literal complejo y cabs(z) como función de magnitud explícita.
ParameterDrift {
init:
z = 0
loop:
z = z^2 + c + p1 * 0.15 + p2 * (0.05, -0.02)
bailout:
cabs(z) < 8
}Lección 3
Usa zPrev como memoria de retroalimentación y combina bien con la coloración orbitEcho para envolventes de órbita.
Enfoque: zPrev como el estado de órbita anterior. La retroalimentación agrega memoria sin introducir una segunda variable de estado administrada manualmente.
OrbitEcho {
init:
z = pixel
loop:
z = sqr(z) + zPrev * (0.30, -0.12) + pixel * (0.85, 0.0)
bailout:
|z| < 48
}El Editor FRM abre estos mismos ejemplos verificados por compilación mediante un ID estable. El código fuente de la fórmula permanece solo en la pestaña actual hasta que lo guardas en tu biblioteca de fórmulas en la nube y nunca se incorpora en la URL.
La compilación se detiene en la etapa insegura más temprana y reporta mensajes orientados al código fuente. Una construcción rechazada nunca se reescribe en algo que solo se parece.
Los caracteres inesperados y los identificadores no compatibles se reportan con su línea y columna.
Las secciones, expresiones o bloques de flujo de control malformados se diagnostican antes de la validación semántica.
Las variables desconocidas, las asignaciones inválidas, los desajustes de tipo y la semántica no compatible impiden la generación de código.
El GLSL generado conserva mapeos que pueden apuntar un fallo de compilación del shader de vuelta a la ubicación FRM de origen.
Al corregir un error, empieza con el primer mensaje reportado: los diagnósticos posteriores pueden ser consecuencias del mismo token faltante o de la misma expresión inválida.
Una fórmula que escribes es privada hasta que decidas lo contrario. Hay tres formas en que puede viajar — cada una explícita, ninguna silenciosa.
Privada por defecto
Las fórmulas viven en tu biblioteca en la nube, visibles solo para ti. Las obras que guardas llevan una copia del código fuente de la fórmula dentro del borrador, así que siempre se abren tal como las dejaste.
Descarga el archivo .frm
Tu fórmula es texto plano. Descárgala desde Mis fórmulas cuando quieras y conserva tu propia copia — sin solicitud de exportación ni esperas.
Publica una obra, comparte el código fuente
Publicar una obra que usa tu fórmula hace público el código fuente de la fórmula bajo la Licencia MIT: cualquiera puede leerlo, copiarlo y construir sobre él. La página de la comunidad muestra el nombre de la fórmula desde sus metadatos y ofrece el código fuente como descarga. Esto no se puede deshacer para esa publicación.
El texto completo de la Licencia MIT está en opensource.org.
Abre Explorar para comparar el comportamiento de las fórmulas integradas, la coloración, las transformaciones, la animación y los controles de exportación antes de escribir una fórmula personalizada.
Abrir ExplorarUsa el Editor FRM dedicado para compilar, previsualizar, importar y descargar fórmulas; inicia sesión para guardar una en tu biblioteca de fórmulas en la nube antes de enviarla a Explorar.
El contexto histórico y los detalles de implementación se enlazan por separado para que la guía pueda distinguir el linaje de Fractint del contrato actual del compilador de FractalPark.