Главная » Архив меток: math

Архив меток: math

Математика в Gamedev по-простому. Кривые и дождь в Unity

Всем привет! Меня зовут Гриша, и я основатель CGDevs. Продолжим говорить про математику что ли. Пожалуй, основное применение математики в геймдеве и компьютерной графики в целом – это VFX. Вот и поговорим про один такой эффект – дождь, а точнее про его основную часть, требующую математики – рябь на поверхности. Последовательно напишем шейдер для ряби на поверхности, и разберём его ...

Читать далее »

Математика в Gamedev по-простому. Триангуляции и Triangle.Net в Unity

Всем привет! Меня зовут Гриша, и я основатель CGDevs. Математика – очень крутой инструмент при разработке игр. Но если скажем без понимания векторов и матриц обойтись в принципе сложно, то алгоритмы триангуляций не столь обязательная вещь, но с помощью них решается достаточно большое количество интересных задач. Сегодня хотелось бы поговорить про достаточно важный инструмент в вычислительной геометрии, такой как триангуляции ...

Читать далее »

Математика в Gamedev по-простому. Матрицы и аффинные преобразования

Всем привет! Меня зовут Гриша, и я основатель CGDevs. Сегодня хочется продолжить тему математики в геймдеве. В предыдущей статье были показаны базовые примеры использования векторов и интегралов в Unity проектах, а сейчас поговорим о матрицах и аффинных преобразованиях. Если вы хорошо разбираетесь в матричной арифметике; знаете, что такое TRS и как с ним работать; что такое преобразование Хаусхолдера – то ...

Читать далее »

Математика в Gamedev по-простому. Векторы и интегралы

Всем привет! Сегодня хотелось бы поговорить о математике. Математика очень интересная наука и она может сильно пригодиться при разработке игр, да и в целом при работе с компьютерной графикой. Многие (особенно новички) просто не знают о том, как она применяется при разработке. Существует множество задач, не требующих глубокого понимания таких понятий как: интегралы, комплексные числа, группы, кольца и др, но ...

Читать далее »

Laplace Blur

Можно ли блюрить Лапласом вместо Гаусса, во сколько раз это быстрее, и стоит ли того потеря 1/32 точности.(Laplace Blur — Предлагаемое оригинальное название алгоритма) Как любитель на досуге разрабатывать оригинальные алгоритмы эффектов, хотел бы предложить общественности алгоритм «почти гаусиан блюра», отличающийся применением исключительно быстрых процессорных инструкций (сдвигов и масок), а потому доступный к реализации вплоть до микроконтроллеров (чрезвычайно быстрый в ...

Читать далее »

[Из песочницы] Наивный Байес, или о том, как математика позволяет фильтровать спам

Привет! В этой статье я расскажу про байесовский классификатор, как один из вариантов фильтрации спам-писем. Пройдемся по теории, затем закрепим практикой, ну и в конце предоставлю свой набросок кода на мною обожаемом языке R. Буду стараться излагать максимально легкими выражениями и формулировками. Приступим! Без формул никуда, ну и краткая теория Байесовский классификатор относится к разряду машинного обучения. Суть такова: система, ...

Читать далее »

IGNG — инкрементальный алгоритм растущего нейронного газа

class NeuralGas(): __metaclass__ = ABCMeta def __init__(self, data, surface_graph=None, output_images_dir='images'): self._graph = nx.Graph() self._data = data self._surface_graph = surface_graph # Deviation parameters. self._dev_params = None self._output_images_dir = output_images_dir # Nodes count. self._count = 0 if os.path.isdir(output_images_dir): shutil.rmtree(''.format(output_images_dir)) print("Ouput images will be saved in: {0}".format(output_images_dir)) os.makedirs(output_images_dir) self._start_time = time.time() @abstractmethod def train(self, max_iterations=100, save_step=0): raise NotImplementedError() def number_of_clusters(self): return nx.number_connected_components(self._graph) def ...

Читать далее »

Разбор перформансных задач с JBreak (часть 4)

0x0000000002a70b14: vmovsd xmm1,QWORD PTR [rip+0xffffffffffffff44] # 0x0000000002a70a60 ; {section_word} 0x0000000002a70b1c: vmovsd QWORD PTR [rsp],xmm1 0x0000000002a70b21: fld QWORD PTR [rsp] 0x0000000002a70b24: vmovsd QWORD PTR [rsp],xmm0 0x0000000002a70b29: fld QWORD PTR [rsp] 0x0000000002a70b2c: movabs rax,0x6c4ba7d0 ; {external_word} 0x0000000002a70b36: fld QWORD PTR [rax] 0x0000000002a70b38: fucomip st,st(2) 0x0000000002a70b3a: jp 0x0000000002a70b53 0x0000000002a70b40: jne 0x0000000002a70b53 0x0000000002a70b46: fxch st(1) 0x0000000002a70b48: ffree st(0) 0x0000000002a70b4a: fincstp 0x0000000002a70b4c: fmul st,st(0) 0x0000000002a70b4e: ...

Читать далее »