Em uma pergunta anterior , sugeriu-se que os campos de distância assinados possam ser pré-computados, carregados em tempo de execução e usados a partir daí.
Por razões que explicarei no final desta pergunta (para pessoas interessadas), preciso criar os campos de distância em tempo real.
Existem alguns documentos disponíveis para diferentes métodos que deveriam ser viáveis em ambientes de tempo real, como métodos para transformações à distância de chanfro e transformações baseadas em aproximação de diagrama de Voronoi (conforme sugerido nesta apresentação pelo desenvolvedor Pixeljunk Shooter ), mas Eu (e, portanto, pode-se supor que muitas outras pessoas) têm muita dificuldade em realmente usá-las, uma vez que geralmente são longas, inchadas em grande parte com matemática e não muito algorítmicas em suas explicações.
Qual algoritmo você sugeriria para criar os campos de distância em tempo real (favoravelmente na GPU), especialmente considerando a qualidade resultante dos campos de distância?
Como estou procurando uma explicação / tutorial real, em vez de um link para apenas outro artigo ou slide, essa pergunta receberá uma recompensa assim que for elegível para uma :-).
Aqui está o porquê eu preciso fazer isso em tempo real:
Se você precisar precomputar esses SDFs para grandes ambientes 2D (pense em um mapa grande como Terraria), isso significa que você está aceitando uma sobrecarga bastante grande no espaço de armazenamento (e no tempo de geração do mapa) em favor da implementação de um algoritmo complicado, rápido o suficiente para gerar SDF em tempo real.
Por exemplo, um mapa relativamente pequeno com 1000 * 256 (largura * altura) com um tamanho de bloco de 10 * 10 pixels e, portanto, dimensões totais de 10000 * 2560 pixels já custaria cerca de 2 megabytes de tamanho, se você escolher um tamanho relativamente pequeno Resolução SDF de 128x128, supondo que você esteja armazenando apenas os valores de distância de 0 a 255.
Obviamente, isso pode se tornar rapidamente demais e é uma sobrecarga que eu não quero ter.
Há algo mais:
Os SDFs podem ser usados para muitas coisas (como detecção de colisão), e alguns aplicativos úteis ainda não foram descobertos. Eu acho que muitas pessoas vão procurar essas coisas no futuro, e se tivermos uma resposta abrangente aqui, acho que vamos ajudar muitas pessoas.