Войти
Вело-изобретателиФорумSR2D - софтовый 2D движок

SR2D, тестируем x64 версию. (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
20:49, 24 ноя. 2019

SilentPrayerCG
Я понял, виноват спрайт _BrushedRadial.png, попробуй мой вариант:
_BrushedRadial | SR2D, тестируем x64 версию.

#46
8:17, 25 ноя. 2019

Mikle
А в чем разница?
Я в фотошопе просто удалил по кругу как-бы лишнее, и сейвнул в пнг.
Я так понимаю, что дело в том какая инфа о цвете в том месте где прозрачно
т.е если убрать альфу из пнг, в том месте получается белый цвет тупо.

#47
8:43, 25 ноя. 2019

SilentPrayerCG
> Я так понимаю, что дело в том какая инфа о цвете в том месте где прозрачно
Да, при любом скейле или повороте такие места взаимно пересекаются, это касается не только SR2D, но и, например, Direct3D. Существуют правила того, как правильно делать альфу в спрайтах.
SilentPrayerCG
> если убрать альфу из пнг, в том месте получается белый цвет тупо
Там должен быть тот же цвет, какой в соседней точке с неубранной альфой, тогда всё будет нормально.

#48
17:20, 25 ноя. 2019

Mikle
тогда надо тга делать, с альфаканалом, что-бы не херилось в месте прозрачности

а ты как сделал этот градиент?

#49
(Правка: 19:44) 19:43, 25 ноя. 2019

SilentPrayerCG
> тогда надо тга делать, с альфаканалом, что-бы не херилось в месте прозрачности
Просто не пользоваться для этого фотошопом.
SilentPrayerCG
> а ты как сделал этот градиент?
Сгенерировал так (код VB6):

Dim Spr As New SR2D_Sprite
Const Pi As Single = 3.141593

Private Sub Gen()
  Dim x As Long, y As Long
  Dim dx As Single, dy As Single
  Dim A As Single, R As Single

  Spr.Init 320, 320
  For y = 0 To 319
    For x = 0 To 319
      dx = x - 159.5
      dy = y - 159.5
      R = Sqr(dx * dx + dy * dy)
      R = (158 - R) * 255
      If R > 255 Then R = 255 Else If R < 0 Then R = 0
      A = Atn(dx / dy) + Pi / 2
      If dy < 0 Then A = A + Pi
      A = A * 255 / (2 * Pi)
      Spr.SetPixel x, y, ARGB(R, A, A, A)
    Next x
  Next y
  Spr.SaveToFile "_BrushedRadial.png", FF_ARGB_PNG
End Sub
#50
20:23, 25 ноя. 2019

Mikle
Я вот сейчас попытался исключить спрайты, и рисовать круговой градиент линией (твоей, из спрайта которая)

Не из-за альфы, скорее, а из-за того что антиалиасинг тут вредит сильно
и что-то странное, рисую линию по кругу, и получаются дыры
https://gamedev.ru/files/images/?id=142699

проверил, без линии, рисовал по пикселю, нормально (как и в прошлый раз когда я делал подобное)
https://gamedev.ru/files/images/?id=142700

это одинаковый шаг на первой и на второй картинке

даже линиями то медленновато выходит, пикселями очень медленно

наверное стоит все-таки спрайтами сделать, тогда жду когда сделаешь опцию отключить фильтрацию)
другой вариант через graphics ресайзить)

#51
22:05, 25 ноя. 2019

SilentPrayerCG
> антиалиасинг тут вредит сильно
А что за конечная цель?

#52
(Правка: 10:47) 10:44, 27 ноя. 2019

Mikle
хотел сгенерить текстурку что-бы в рендере на ротейшен для анизотропии подцепить
из-за антиалиасинга там левые переходы цвета получаются, которые начинают на поворот влиять

https://gamedev.ru/files/images/?id=142749

видишь там где от белого к черному переходит выходит линия, и вокруг кружков контур
он из-за антиалиасинга получается)

#53
10:56, 27 ноя. 2019

SilentPrayerCG
> там где от белого к черному переходит выходит линия
Не вижу. Вижу белые радиусы на чёрном фоне.
SilentPrayerCG
> и вокруг кружков контур
Но с моей текстурой этого же нет?
Скейл без фильтрации я сделаю, просто сейчас занят постоянно. Но хочется понять, откуда проблемы, которых не должно быть.

#54
17:58, 27 ноя. 2019

Mikle
Я вот сейчас стал делать пример визуальный, и нашел баг, у нас нефига не отключается фильтрация для ротейшена. Как пофиксим покажу.
У ротейшена 0 это 0 градусов 255 это 360 градусов (ну или наоборот я не знаю точно)
а когда скейлишь такой градиент, в том месте где белый переходит в черный, образуется антиалиасинг, т.е пиксели усредненных между белым и черным цветом, и блик в этом месте начинает вращаться, из-за этого образуется шов

#55
(Правка: 21:30) 20:33, 27 ноя. 2019

Так этот градиент используется как карта текстурных координат в 3D рендере? Тогда придётся отключать фильтрацию в нём, но тогда будет выглядеть ужасно.
Нужно принципиально менять подход - делать карту двухкомпонентную, обычно используют R и G компоненты, фактически как в бамп-маппинге. Тогда не придётся отключать фильтрацию ни в 2D, ни в 3D.

Спрайт должен быть таким:
Radial | SR2D, тестируем x64 версию.
https://gamedev.ru/files/images/?id=142757

+ Генерация:

Только для 3D рендера лучше сгенерировать картинку с размерами, равными степеням двойки, например, 512*512, чтобы мип-маппинг работал нормально.
#56
(Правка: 21:53) 21:37, 27 ноя. 2019

Mikle
Не, там обычная чернобелая карта используется для ротейшена) как везде
ни разу не видел что-бы где-то двухцевтная карта использовалась
Рендер мои товарищи пишут, он опенсорный, на опенцл, если интересно вот наша группа https://vk.com/hydrarenderer если нет то ладно.

Слуш, я сейчас пытаюсь без АА все сделать, пока делаю маску через графикс
тут у меня такая проблема

я перегоняю битмап в спрайт

BrushMaskSprite = New Sprite(BrushMask)
BrushMask - это битмап

в общем после того как я таким образом инициализирую спрайт
битмапа брушмаск ломается
я не особо пойму что с ним происходит, вроде он не Nothing но все его параметры становятся вот так
https://gamedev.ru/files/images/?id=142760

не знает в чем дело и как это обойти? brushmask.clone что-ли делать?

сделал так BrushMaskSprite = New Sprite(new bitmap(BrushMask))
перестало ломаться

#57
(Правка: 11:35) 11:31, 28 ноя. 2019

SilentPrayerCG
> там обычная чернобелая карта используется для ротейшена) как везде
Где "везде"? В плагинах 3DMax? Не занимался этим, но всё равно странно, если так. В любом графическом API это применимо только при отключении фильтрации, и речь не об этапе создания текстуры, а конечном рендере, где текстура используется, как карта для выборки.
Ты можешь написать последовательность действий в вашем рендере, на каком этапе данные передаются из SR2D в OpenCL? В частности - вот этот шов между 0 и 360 гр. возникает в SR2D, или уже в OpenCL?

Финалом работы SR2D является эта текстура?
Annotation 2019-11-24 014338 | SR2D, тестируем x64 версию.

Если так, то убирание фильтрации только на этапе SR2D не поможет.

А на каком этапе текстура становится такой?
Radial | SR2D, тестируем x64 версию.
Видишь, всё с фильтрацией, и никаких швов.
У меня завтра с утра будет время, постараюсь по-быстрому накидать скейл без фильтрации, но, подозреваю, это не решит проблему.

SilentPrayerCG
> после того как я таким образом инициализирую спрайт
> битмапа брушмаск ломается
Попробуй из LoadFromBitmap() убрать строку:

BmpDest.Dispose()
#58
18:14, 28 ноя. 2019

Mikle
в рендер системах, vray corona mental ray, octane итд

ср2д к рендеру напрямую не относится конечно), я просто пытался сгенерить текстуру в файл
сейчас у нас там косяк, не отлажена возможность отключать фильтрацию пока, но в движке она есть, по этому текстура с таким флагом в рендере уже будет без фильтрации и без каких либо левых цветов из-за алиасинга

текстура не становится такой, это анизотропный блик
я по умному наверное не объясню, это модель называется TRGGX, у нас, она поддерживает анизотропию, это симуляция бороздок параллельных на материале, грубо говоря
у анизотропии есть поворот, т.е это по сути поворот этих бороздок

короче знаешь крутилки громкости, у колонок к примеру, или у какого-нибудь оборудования, там как-бы круговой эффект такой, или полированный метал
вот это добивается за счет черно-белой карты поворота, вот с такими градиентами

пофиксят товарищи экспорт флага фильтрации покажу

---
по поводу диспоса понял, спасибо попробую, скорее всего из-за него, там битмап как типа ссылки получается, и скорее всего диспозится там, при инициализации спрайта

#59
9:35, 29 ноя. 2019

SilentPrayerCG
По поводу Dispose - поздравляю, ты нашёл баг.
Sub LoadFromBitmap должна выглядеть так:

+ Показать

А скейл без АА попробуй такой временный вариант, добавь в класс Sprite процедуру:

+ Показать

Это медленный временный вариант для проверки.

Страницы: 1 2 3 4 5 Следующая »
Вело-изобретателиФорумSR2D - софтовый 2D движок