Code golfing a tiny demo using maths and a pinch of insanity
Этот код — минималистичная демка в 464 символах GLSL, созданная без текстур и мешей, чисто математикой. Она генерирует пейзаж с горами, туманом и облаками, используя накопление синусоидальных волн для шума вместо дорогих методов вроде градиентного или value noise. Каждый пиксель вычисляется процедурно через итеративный цикл, имитирующий лучи для объёма и глубины.
Ключевые приёмы: компактный шум через abs(sin(x) + sin(y)), матричные вращения для камеры и анимации, нелинейные преобразования для цвета и освещения. Практический вывод — даже сложную графику можно ужать в крошечный код, жертвуя читаемостью ради размера. Неожиданный эффект: демка "стареет" из-за накопления ошибок чисел с плавающей точкой, требуя периодической перезагрузки.
Комментарии (17)
- Обнаружена возможность сэкономить байты в шейдерном коде через математические преобразования.
- Предложена дальнейшая оптимизация кода с сохранением трёх байтов за счёт предварительного умножения переменной.
- Автор принял предложение и обновил код на Shadertoy с указанием авторства.
- Возникли проблемы с производительностью WebGL в браузерах Edge и Chrome на Windows из-за слишком большого количества контекстов.
- Демонстрация корректно работает в Firefox на Windows и получила высокую оценку за визуальный эффект.
Geotoy – Shadertoy for 3D Geometry
- 3d hilbert curve
- shingles
- temple
- rusty maze
- spring
- fbm terrain
- torus knot
- dandelion
- power line
- woven WIP
- roots
- bumpy sphere
- abstract hourglass
- birdbath
- concrete tetrapod
- terraced floating island
- extruded clay bowl
- fancy shader props
- superellipse dominos
- dark souls tree
Автор всех работ: ameo
Geoscript и Geotoy — Casey Primozic, открытый код.
Комментарии (22)
- GeoToy — это «Shadertoy для геометрии»: вместо цвета пикселя функция возвращает вершины, поэтому куб рисуется 36 вызовами, а не 921 600.
- Похож на DSL для 3D-моделей; пример «temple» помогает быстрее понять синтаксис.
- Материалы задаются не кодом, а через UI (три пиктограммы → «materials») и используют трипланарное отображение без UV.
- Анимации пока нет, но пользователи просят добавить переменную вроде
iTimeиз Shadertoy. - Проект вызывает ассоциации с Structure Synth и geometry-шейдерами, но последние считаются трудными для оптимизации.