· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Эффект капель

Посл.отвђт Сообщенiе


Дата: Авг 24, 2003 18:21:40

Здравствуйте! Спасибо всем за предыдущие ответы, они мне пригодились и помогли! У меня снова вопрос. Сделал я красивую картинку на 3D - редерил час! И хочу скрин-сейвер сделать. Каритнку эту в окно загрузить и эффект капель добавить. Но не знаю как сдлеать этот самый эффект капель. Есть пример (waterref), но там по всему экрану, а мне нужно на картинку в окне применить на картинку. И ещё - а окно ли это - скринсейвер? Буду благодарен за исходный код подобного приложения или описание принцыпа. Сам ничего понять пока не могу.
Заранее спасибо!
1990


Дата: Авг 25, 2003 13:00:16 · Поправил: bsl_zcs

Алгоритм рассчёта карты высот поверхности воды крайне прост. По сути, это блюр с вычитанием прошлого кадра и затуханием. Единственная тонкость - это контроль переполнения.

Картинка 320 на 200, два буфера p1 и p2. На каждый кадр:
	{
		// первую и последнюю строчки пропустить, чтобы за край не вылезти
		for(a=320; a<(64000-640); a++)
		{
			// суммировать 8 точек вокруг текущей
			b = p1[a-321]+p1[a-320]+p1[a-319]+p1[a-1]+p1[a+1]+p1[a+319]+p1[a+320]+p1[a +321];
			// поделить на 4 и вычесть значение с прошлого кадра
			c = (b>>2)-p2[a];
			// проследить, чтобы не переполнилось
			if(c<0) p2[a]=0;
			// ввести коэффициент затухания
			else p2[a] = c - (c>>6);
		}
		// Вывести на экран
		dump(p2,VIDEO,64000);
		// поменять буфера местами
		t = p1; p1 = p2; p2 = t;
	}

Наложение текстуры на карту высот делается дисплейсмент маппингом. Его можно делать руками, а можно сгрузить на ускоритель по сетке 8 на 8.

Вот, в принципе, и всё...


Дата: Авг 25, 2003 18:16:51

Спасибо за ответ, bsl_zcs! Всё понятно и сейчас я уже кое-что сделал!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.137