init:
Executa uma vez por pixel. Defina aqui o valor inicial da órbita e as variáveis auxiliares.
Aprenda o subconjunto FRM testado do FractalPark, entenda como o código-fonte vira um shader de GPU e construa três fórmulas funcionais a partir dos mesmos exemplos usados pelo editor.
FRM é uma forma compacta e baseada em texto de descrever um fractal iterativo. Uma fórmula define seu estado inicial, o cálculo repetido para cada órbita e a condição que decide se a iteração continua.
O formato nasceu do ecossistema Fractint, onde arquivos de fórmula permitiam trocar experimentos sem recompilar o programa de renderização. O FractalPark leva essa ideia de autoria para um fluxo de trabalho no navegador, documentando seu próprio subconjunto testado em vez de reivindicar compatibilidade completa.
Para as origens e a história do projeto em geral, veja o site do projeto Fractint.
O FractalPark tokeniza, analisa, valida e compila um subconjunto deliberado de FRM. A tabela separa construções que funcionam diretamente, construções com semântica documentada do FractalPark e construções que o fluxo de trabalho atual não consegue preservar.
| Nível | Significado | Âmbito verificado |
|---|---|---|
| Suportado | Coberto pelos testes do compilador e utilizável sem ressalva semântica. |
|
| Adaptado | Aceito com uma diferença semântica documentada ou como extensão do FractalPark. |
|
| Não suportado | Não preservado pelo compilador atual nem pelo fluxo de arquivos; rejeitado em vez de reescrito silenciosamente. |
|
Esta é uma linha de base de compatibilidade testada, não uma afirmação de compatibilidade total com o Fractint. Quando o compilador mudar, esta matriz e seus testes devem mudar juntos.
Essas contagens de capacidades vêm do manifesto versionado: 588 entradas-alvo compreendem 579 aprovações strict-v2 e 9 dispensas documentadas; 117 entradas separadas são excluídas com motivos estáveis.
Parâmetros: p1, p2, p3, p4, p5 · Slots de função: fn1, fn2, fn3, fn4
Manifesto de capacidades v1 · Semântica estrita v2
Uma fórmula FRM do FractalPark tem uma declaração nomeada e três seções explícitas. Juntas, elas definem a transição de estado para cada pixel.
Executa uma vez por pixel. Defina aqui o valor inicial da órbita e as variáveis auxiliares.
Executa uma vez por iteração. Atualize z e qualquer estado de que a próxima iteração precise.
Retorna a condição para continuar a órbita. Quando ela se torna falsa, o ponto escapou.
Os nomes das seções são estruturais, não comentários: omitir ou escrever errado um deles gera um diagnóstico.
A linguagem permanece intencionalmente pequena: expressões descrevem aritmética complexa, instruções atualizam o estado da órbita e o fluxo de controle seleciona entre atualizações.
O FractalPark não cola texto FRM em um shader. Ele passa o código-fonte por um compilador em etapas para que sintaxe, significado, código gerado e diagnósticos permaneçam conectados.
O texto exato do editor, da colagem ou do arquivo local é a entrada autoritativa.
O lexer reconhece nomes, números, operadores, marcadores de seção, comentários e diretivas, mantendo as localizações no código-fonte.
O parser constrói uma árvore estruturada da fórmula e reporta declarações, expressões e blocos de fluxo de controle malformados.
O validador verifica nomes, tipos, seções e semântica suportada antes de uma fórmula canônica ser criada.
A geração de código emite funções de shader e registra mapeamentos do GLSL gerado de volta ao código-fonte FRM.
Uma compilação bem-sucedida se torna o mesmo contrato de plugin de fórmula usado pelo renderizador e pelo sistema de montagem de shaders.
O contrato compartilhado do compilador mantém o Explorar, o Editor autônomo, as fórmulas personalizadas salvas, os exemplos e os testes em um único caminho de implementação.
Estes exemplos avançam da menor fórmula quadrática até parâmetros e realimentação com estado. Cada bloco de código-fonte vem diretamente do registro compartilhado de exemplos e é compilado durante os testes.
Lição 1
A menor fórmula de tempo de escape, útil para aprender primeiro a estrutura init / loop / bailout.
Foco: a declaração e a estrutura init / loop / bailout. Altere o expoente ou o limite de escape somente depois que esta versão compilar.
StarterBrot {
init:
z = 0
loop:
z = z^2 + c
bailout:
|z| < 4
}Lição 2
Demonstra os slots de parâmetro p1 / p2 e a diferença entre cabs e |z|.
Foco: os slots de parâmetro p1 e p2, um literal complexo e cabs(z) como função explícita de magnitude.
ParameterDrift {
init:
z = 0
loop:
z = z^2 + c + p1 * 0.15 + p2 * (0.05, -0.02)
bailout:
cabs(z) < 8
}Lição 3
Usa zPrev como memória de realimentação e combina bem com a coloração orbitEcho para envoltórias de órbita.
Foco: zPrev como o estado anterior da órbita. A realimentação adiciona memória sem introduzir uma segunda variável de estado gerenciada manualmente.
OrbitEcho {
init:
z = pixel
loop:
z = sqr(z) + zPrev * (0.30, -0.12) + pixel * (0.85, 0.0)
bailout:
|z| < 48
}O Editor FRM abre esses mesmos exemplos verificados pela compilação por ID estável. O código-fonte da fórmula permanece na aba atual até você salvá-lo na sua biblioteca de fórmulas na nuvem e nunca é incorporado à URL.
A compilação para no estágio inseguro mais precoce e reporta mensagens orientadas ao código-fonte. Uma construção rejeitada nunca é reescrita em algo que apenas se parece com ela.
Caracteres inesperados e identificadores não suportados são reportados com sua linha e coluna.
Seções, expressões ou blocos de fluxo de controle malformados são diagnosticados antes da validação semântica.
Variáveis desconhecidas, atribuições inválidas, incompatibilidades de tipo e semântica não suportada impedem a geração de código.
O GLSL gerado mantém mapeamentos que podem apontar uma falha de compilação do shader de volta à localização FRM de origem.
Ao corrigir um erro, comece pela primeira mensagem reportada: diagnósticos posteriores podem ser consequências do mesmo token ausente ou da mesma expressão inválida.
Uma fórmula que você escreve é privada até você decidir o contrário. Há três formas de ela viajar — todas explícitas, nenhuma silenciosa.
Privada por padrão
As fórmulas ficam na sua biblioteca na nuvem, visíveis apenas para você. As obras que você salva carregam uma cópia do código-fonte da fórmula dentro do rascunho, então sempre abrem do jeito que você as deixou.
Baixe o arquivo .frm
Sua fórmula é texto simples. Baixe-a de Minhas Fórmulas a qualquer momento e guarde sua própria cópia — sem solicitação de exportação, sem espera.
Publique uma obra, compartilhe o código-fonte
Publicar uma obra que usa sua fórmula torna o código-fonte da fórmula público sob a Licença MIT: qualquer pessoa pode lê-lo, copiá-lo e desenvolver em cima dele. A página da comunidade exibe o nome da fórmula a partir de seus metadados e oferece o código-fonte como download. Isso não pode ser desfeito para aquela publicação.
O texto completo da Licença MIT está em opensource.org.
Abra o Explorar para comparar o comportamento das fórmulas integradas, coloração, transformações, animação e controles de exportação antes de escrever uma fórmula personalizada.
Abrir o ExplorarUse o Editor FRM dedicado para compilar, visualizar, importar e baixar fórmulas; faça login para salvar uma na sua biblioteca de fórmulas na nuvem antes de encaminhá-la ao Explorar.
O contexto histórico e os detalhes de implementação são linkados separadamente para que o guia possa distinguir a linhagem do Fractint do contrato atual do compilador do FractalPark.