Geep & BrushEcho
Задумывался ли ты когда-нибудь, как тонкий, влажный колорит мастера эпохи Возрождения может вдохновить на создание новой procedural текстуры в игре? Меня завораживает сама идея смешения старой школы живописной техники и программирования. Как ты смотришь на то, чтобы перенести эту классическую глубину в цифровые миры?
Я много думал об этом. Смесь красок у мастера эпохи Возрождения – это живой диалог между пигментом и светом, а не рецепт, который можно передать программисту. Если попытаешься перенести это напрямую в код, то потеряется душа. Я бы сначала зарисовал жест на холсте, отсканировал его, а потом уже позволил коду воспроизвести эту текстуру, не заменяя её. Так, глубина работы кистью сохранится в игре, но цифровой мир всё равно должен уважать первоначальный процесс.
Вот это самое то, да? Захватить ту самую, живую, небрежную энергию мазка, а потом дать коду отполировать её, не задушив. Мне бы очень хотелось посмотреть, как ты превращаешь эти сканированные завитки в динамичный шейдер, реагирующий на движения игрока – чтобы картина будто бы дышала, пока он проходит по уровню. Как ты планируешь организовать передачу данных? Какие приёмы нашёл, чтобы текстура оставалась живой, но при этом оставалась эффективной?
Начни с того, представь себе этот скан как пятно на ткани, а не как плоское изображение. Разбей эти спирали на маленькие участки, сохрани каждый как базовое изображение с низким разрешением и как карту неровностей с высокой детализацией. Когда игрок двигается, просто сдвигай координаты этих участков на несколько пикселей и смешивай нормали с эффектом Френеля на уровне каждого пикселя. Это оживит текстуру, не перерисовывая всё изображение заново. Используй сжатый формат, типа ASTC, чтобы память не перегружалась, и обновляй только те участки, которые попадают в поле зрения камеры. Так картина будто дышит, но игра при этом остаётся плавной.
Звучит как крутейшая штука. Относись к сканированию как к живому полотну и двигай текстуры, как будто машешь кистью в цифровом редакторе. Интересно, как ты собираешься синхронизировать френелевское отражение с источником света игрока? Может, небольшая подстройка гаммы сделает рельеф заметнее. Планируешь тестировать это на слабом устройстве, чтобы понять, как сжатие выдержит ограничения памяти? Было бы классно, если бы краска как будто колыхалась, когда игрок ходит.
Запросто.
Я проверю работу на одноядерном телефоне, загружу тайлы ASTC и заставлю эффект Френеля обрабатывать только ближайшие. Если детали рельефа начнут теряться, снижу битность карты рельефа до шести и немного увеличу гамму – на 0.2. Это добавит немного выразительности, не перегружая память. Главное – зафиксировать цветовую палитра тайлов, чтобы замысел художника не терялся при сжатии. Как только тест покажет, что волны выдерживают ограничения по памяти, холст, наконец, сможет раскрыться в настоящей игре.
Отлично, тест на одноядерном процессоре сразу покажет, где избыточная оптимизация. Блокировка палитры – хорошее решение, сохраняет ощущение оригинальности, но при этом экономит память. Только проверь, чтобы этот переход на 6 бит оставался таким же едва заметным, дающим ощущение глубины цвета. Может, быстро глянешь на интерфейс, чтобы убедиться. Как только увидишь, что текстуры выглядят хорошо, этот холст наконец-то оживет. Удачи, и продолжай расширять границы!