ПрограммированиеФорумГрафика

Вопрос по OpenGL от ZeptoLab

Страницы: 1 2 3 4 Следующая »
#0
21:09, 7 мая 2016

Кстати, сама задача отображения шарика c использованием OpenGL-кода на разных устройствах нетривиальна сама по себе. Некоторые использовали текстуру, которая при увеличении размеров экрана теряла наглядность; некоторые рисовали шарик программно. Кстати, будем рады услышать комментарии небезраличных хабражителей на эту тему: как бы вы нарисовали OpenGL-шарик без учета первого ограничения (инвариантности геймплея)?

(Имеется в виду шарик в игре Арканоид)

https://habrahabr.ru/company/ZeptoLab/blog/147684/

#1
21:22, 7 мая 2016

1 шарик я бы рисовал так же, как и 10000000 — пиксельным шейдером через GL_POINTS с записью в буфер глубины.

#2
21:44, 7 мая 2016

Скорее всего сгенерил бы текстурку шарика с учётом разрешения экрана.

#3
21:46, 7 мая 2016

рисовал бы квады и дискардил бы углы по текстурным координатам в ps.

#4
0:20, 8 мая 2016

FROL
А на мобильных девайсах? Слышал, что там с этим есть проблемы.

#5
1:10, 8 мая 2016

Это тз?
Signed distance field же.

#6
1:35, 8 мая 2016

Варианты:
1. Подготовил бы несколько наборов текстур под разные разрешения.
2. Рисовал бы как 3д модель, треугольниками.

Зависит от арта.

#7
2:34, 8 мая 2016

Зависит от того, как должен выглядеть шарик. Например можно шейдером вот так сделать:

#version 120

varying vec2 uv;
varying vec4 color;

void main()
{
  // [0,1] to [-1,1]
  vec2 v = uv * 2.0 - vec2(1.0, 1.0);

  float d = dot(v, v);
  float c = 1.0 - d;
  float a = 1.0 - pow(d, 10.0);

  gl_FragColor = vec4(color.xyz * c, color.w * a);
}

Нарисовав квад соответственно с этим шейдером.

#8
13:15, 8 мая 2016

Executor
> Например можно шейдером вот так сделать:
Суслик правильно сказал - point sprite надо юзать.

#9
13:22, 8 мая 2016

Не знаю как на мобилках, но на ПК point sprites это прошлый век.
В D3D10 (2006 год) его уже нету.
Если он есть в мобилках, то очень странно, технологии 10+ лет давности.

#10
15:13, 8 мая 2016

Sergio
> Суслик правильно сказал - point sprite надо юзать.

Он сказал  - GL_POINTS

#11
15:37, 8 мая 2016

Executor
> Зависит от того, как должен выглядеть шарик.

Допустим шарик это текстурка в виде смеющегося колобка.

#12
16:16, 8 мая 2016

Executor
> Не знаю как на мобилках, но на ПК point sprites это прошлый век.
> В D3D10 (2006 год) его уже нету.
> Если он есть в мобилках, то очень странно, технологии 10+ лет давности.
А с чего ты решил, что это устарело? Если это выкинули из DX10, это не значит, что это устарело. Оно даже в Vulkan'е есть, а значит и в железе тоже должно быть. Просто взяли и сделали большую точку - квадрат с текстурными координатами. Идея простейшая, есть много ограничений, но есть много применений, где эти ограничения уместны. Но работает быстрее, чем на геометрических шейдерах раза в 2. Так что зря их выкинули из DX10.

#13
16:33, 8 мая 2016

Executor
> Не знаю как на мобилках, но на ПК point sprites это прошлый век.
> В D3D10 (2006 год) его уже нету.
> Если он есть в мобилках, то очень странно, технологии 10+ лет давности.
саму геометрию из 4 вертексов можно сгенерить как угодно — хоть геометрическим шейдером, хоть через gl_PointSize, но второе на современном железе всё ещё работает быстрее. основная идея здесь в том, чтобы полученный квад рендерить во фрагментном шейдере, считая пересечение с аналитической сферой и discard'я ненужное.

#14
16:36, 8 мая 2016

Suslik
но я слышал, что discard на мобилах работает медленнее, чем просто alpha blend с 0 альфой.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.