Size: a a a

2020 May 19

TT

TONYMIN TGD in pro.lua
Но как оно поможет мне при создании игры не на голом OpenGL / других граф. библиотек ?
источник

S

Snusmumriken in pro.lua
Отлично поможет понять, как работают движки и что там происходит под капотом. И немножко поменьше просадок производительности. И стимул изучать функции самого движка, на тему "а как тут реализована та или иная фигня, и куда её можно приспособить в моей СуперИгре".
источник

S

Snusmumriken in pro.lua
Допустим, ты хочешь сделать пару тысяч спрайтов на экране, но чтобы они все были анимированными, с разными шейдерами, красиво переливающимися, и при этом не просаживалась производительность.
источник

TT

TONYMIN TGD in pro.lua
И как это можно сделать? Я не буду высказывать свои глупые предположения, просто расскажи, пожалуйста
источник

S

Snusmumriken in pro.lua
Объединение нескольких шейдеров в одну шейдерную программу, запись в свойства вершин инстансов спрайтов дополнительных параметров с набором требуемых шейдеров для этой вершины (каким квадом обрезать текстурный атлас для данного спрайта для анимации, какие шейдеры использовать и с какими параметрами), и собственно инстанцирование. Это на OpenGL. А в конкретных движках надо смотреть, реализовано ли там такое, или можно ли такое впихнуть ))
источник

S

Snusmumriken in pro.lua
Вот ты видел примеры хардварного 3д на TIC80? Вот если ты изучишь базу, сможешь стать достаточно образованным для того чтобы делать так же ))
источник

S

Snusmumriken in pro.lua
TONYMIN TGD
И как это можно сделать? Я не буду высказывать свои глупые предположения, просто расскажи, пожалуйста
О, кстати, дурацкий вопрос.

Вот у тебя есть какой-нибудь движок. Каким образом производится черчение на экране обыкновенной прямой линии?
love.graphics.line(), например. Примерный алгоритм действий.
источник

TT

TONYMIN TGD in pro.lua
Ну даже не знаю, есть много различных способов. Это надо ещё подумать, какой из них самый оптимизированный...
источник

S

Snusmumriken in pro.lua
Ну вот есть примерно три распространённых способа. С видеокартой и без видеокарты (хардвар и софтвар), и одна модификация для обоих.
источник

S

Snusmumriken in pro.lua
TONYMIN TGD
Ну даже не знаю, есть много различных способов. Это надо ещё подумать, какой из них самый оптимизированный...
Карочи, прямые пиксельные линии — это алгоритм Брезенхэма. Придуман, о боже мой, в 1962 году.

С видеокартой, на видяху подаётся вектор и матрица трансформации (смещение/поворот), и она вызывает шейдер (обычно, выбор цвета) для каждого пикселя на линии по алгоритму Брезенхэма.

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

И да, до сих пор не придумали ничего лучше, хотя модификации алгоритма есть, вроде алгоритма Ву, рисующего сглаженную линию.
источник

S

Snusmumriken in pro.lua
источник

S

Snusmumriken in pro.lua
источник

S

Snusmumriken in pro.lua
Угадай, какой тут из алгоритмов какой.
источник

S

Snusmumriken in pro.lua
А теперь дуй на википедию читать. Потом прочитаешь про алгоритмы заливки треугольников.
источник

TT

TONYMIN TGD in pro.lua
Можно любую фигуру залить заливкой соседних пикселей, которые ещё не закрашены ни в какой цвет
источник

TT

TONYMIN TGD in pro.lua
Но это медленно
источник

S

Snusmumriken in pro.lua
Да, классическая рекурсивная заливка, крайне дурацкая и так же легко реализуемая.
источник

S

Snusmumriken in pro.lua
Но это не про треугольники.
источник

TT

TONYMIN TGD in pro.lua
Там интыгралы?
источник

S

Snusmumriken in pro.lua
Нет
источник