Hacker News Digest

Тег: #shadertoy

Постов: 2

Code golfing a tiny demo using maths and a pinch of insanity (blog.pkh.me)

Этот код — минималистичная демка в 464 символах GLSL, созданная без текстур и мешей, чисто математикой. Она генерирует пейзаж с горами, туманом и облаками, используя накопление синусоидальных волн для шума вместо дорогих методов вроде градиентного или value noise. Каждый пиксель вычисляется процедурно через итеративный цикл, имитирующий лучи для объёма и глубины.

Ключевые приёмы: компактный шум через abs(sin(x) + sin(y)), матричные вращения для камеры и анимации, нелинейные преобразования для цвета и освещения. Практический вывод — даже сложную графику можно ужать в крошечный код, жертвуя читаемостью ради размера. Неожиданный эффект: демка "стареет" из-за накопления ошибок чисел с плавающей точкой, требуя периодической перезагрузки.

by ux • 29 сентября 2025 г. в 13:34 • 83 points

ОригиналHN

#glsl#webgl#shadertoy#procedural-generation#code-golf#math

Комментарии (17)

  • Обнаружена возможность сэкономить байты в шейдерном коде через математические преобразования.
  • Предложена дальнейшая оптимизация кода с сохранением трёх байтов за счёт предварительного умножения переменной.
  • Автор принял предложение и обновил код на Shadertoy с указанием авторства.
  • Возникли проблемы с производительностью WebGL в браузерах Edge и Chrome на Windows из-за слишком большого количества контекстов.
  • Демонстрация корректно работает в Firefox на Windows и получила высокую оценку за визуальный эффект.

Комментарии (22)

  • GeoToy — это «Shadertoy для геометрии»: вместо цвета пикселя функция возвращает вершины, поэтому куб рисуется 36 вызовами, а не 921 600.
  • Похож на DSL для 3D-моделей; пример «temple» помогает быстрее понять синтаксис.
  • Материалы задаются не кодом, а через UI (три пиктограммы → «materials») и используют трипланарное отображение без UV.
  • Анимации пока нет, но пользователи просят добавить переменную вроде iTime из Shadertoy.
  • Проект вызывает ассоциации с Structure Synth и geometry-шейдерами, но последние считаются трудными для оптимизации.