init:
Executa uma vez por pixel. Defina aqui o valor inicial da órbita e as variáveis auxiliares.
Aprenda como Definitions FRM-like v1 canônicas alimentam fórmulas Standard publicadas e depois use os exemplos separados do Editor compatível com Classic sem confundir os dois contratos de código-fonte.
FRM-like v1 do FractalPark é a linguagem de código-fonte canônica e tipada por trás das Definitions Standard publicadas. Uma Definition fixa sua linguagem, biblioteca padrão, NumericProfile, parâmetros, estado inicial, passo repetido da órbita e predicado de continuação da iteração.
O .frm Classic surgiu no ecossistema Fractint e continua sendo o contrato de código-fonte usado pelo Editor independente compatível com Classic e pelo pipeline de importação. O FractalPark examina e diagnostica esse dialeto separadamente; código-fonte Classic e frmSemanticsVersion 1 ou 2 não são grafias alternativas do FRM-like v1 canônico.
Para as origens e a história do projeto em geral, veja o site do projeto Fractint.
Esta tabela de compatibilidade descreve o Editor e o caminho de importação compatíveis com Classic. As Definitions Standard canônicas publicadas usam o parser FRM-like v1 versionado separadamente, IR tipado, backend standard32 e Safety Envelope fixo.
| 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 referência de compatibilidade Classic testada, não uma alegação de compatibilidade completa com Fractint. Ela é distinta do registro de publicação Standard.
Estas contagens de capacidade de importação Classic vêm do manifesto de compatibilidade versionado: 588 entradas-alvo abrangem 579 aprovações strict-v2 e 9 dispensas documentadas; 117 entradas separadas são excluídas com motivos estáveis. Elas não contam Definitions FRM-like v1 publicadas.
Parâmetros: p1, p2, p3, p4, p5 · Slots de função: fn1, fn2, fn3, fn4
Manifesto de capacidades v1 · Semântica estrita v2
O FRM-like v1 canônico e os exemplos atuais do Editor Classic compartilham uma fórmula nomeada e as ideias de init, loop e bailout, mas suas gramáticas completas são diferentes. No v1, diretivas semânticas e uma seção opcional de parâmetros tipados também fazem parte da Definition.
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.
As duas superfícies permanecem deliberadamente pequenas. Os resumos abaixo mostram conceitos compartilhados; use a ação Source de um Formula Record publicado para ver as diretivas canônicas e os parâmetros tipados, e use os diagnósticos do Editor para código-fonte Classic.
O FractalPark nunca cola código-fonte em um shader. O código-fonte v1 canônico passa pelo parser tipado e pelo backend CPU/GLSL; o código-fonte do Editor Classic passa pelo scanner, frontend da entrada selecionada, modelo canônico de fórmula e compilador de plugins.
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.
Cada contrato de código-fonte tem seu próprio caminho de implementação. O runtime Standard publicado usa FRM-like v1; o Editor independente e os exemplos atuais de fórmulas personalizadas usam o caminho compatível com Classic. Nenhum deles recorre silenciosamente ao outro.
Estes são exemplos do Editor compatíveis com Classic, não Definitions FRM-like v1 canônicas. Eles vão de uma pequena fórmula quadrática a parâmetros e realimentação com estado; cada bloco de código-fonte vem do registro compartilhado do Editor 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 independente abre esses exemplos compatíveis com Classic, verificados pela compilação, por ID estável. O código-fonte da fórmula fica na aba atual até você salvá-lo na sua biblioteca na nuvem e nunca é incorporado à URL. Isso não ativa a importação nem os writers do v1 canônico.
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 o fluxo atual de compilação, prévia, importação e download compatível com Classic. Ele não aceita código-fonte FRM-like v1 canônico; inspecione o código-fonte v1 publicado em um Formula Record e use a ação Open ou Remix desse Record para executá-lo.
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.