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

Тупит GLSL на айфоне и айпаде, где искать источник проблемы? (2 стр)

Страницы: 1 2
#15
14:55, 30 апр 2016

Нет, там единица (u_pos_modif.w). И выводил в консоль, и изменял вручную на константу. Более того, u_pos_modif можно вообще выкинуть и делать только выборку из текстуры. Баг проявляется и в этом случае.

Вечером прогоню через PVRShaderEditor, посмотрим, что выдаст.

#16
15:01, 30 апр 2016

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

#17
19:02, 30 апр 2016

Единственный работающий в PVRShaderEditor компилятор - PowerVR GLSLES Series6. Выдаёт одинаковый результат что с прибавлением нулевого вектора, что без.

--------------------- Disassembled HW Code -------------------- 

0    : fitr.pixel r2, drc0, cf4, cf0, 2;

1    : mov ft0, sh9
       mov r0.e0.e1.e2.e3, ft0
       mov r1, sh10;

2    : wdf drc0

3    : smp2d.fcnorm drc0, sh4, r2, sh0, _, r6, 1;

4    : wdf drc0

5    : fmul ft0, sh8, r6
       mov r2.e0.e1.e2.e3, sh11
       mov r3, ft0;

А XCode случайно не умеет дебажить OpenGL/GLSL ES непосредственно на iOS-устройстве?

#18
19:08, 30 апр 2016

Ты пробовал втыкать свой шейдер в пустое приложение?

#19
19:13, 30 апр 2016

Так, минутку. Нажал кнопку "Apply optimizer" - оптимизирует исходный код. Выхлоп поменялся на вот такой:

--------------------- Disassembled HW Code -------------------- 

0    : fitr.pixel r2, drc0, cf4, cf0, 2;

1    : mov ft0, sh8
       mov r0.e0.e1.e2.e3, ft0
       mov r1, sh9;

2    : wdf drc0

3    : smp2d.fcnorm drc0, sh4, r2, sh0, _, r6, 1;

4    : wdf drc0

5    : fmul ft0, sh11, r6
       mov r2.e0.e1.e2.e3, sh10
       mov r3, ft0;

Поменялись местами только некоторые регистры (ft*).
Сам исходник:

#version 100
precision mediump float;
uniform sampler2D u_sampler;
varying vec2 v_uv;
uniform vec4 u_pos_modif;
uniform vec3 u_color;
void main ()
{
  lowp vec4 tmpvar_1;
  tmpvar_1.xyz = u_color;
  tmpvar_1.w = (texture2D (u_sampler, v_uv).x * u_pos_modif.w);
  gl_FragColor = tmpvar_1;
}

И с ним бага нет! о_О

#20
4:25, 3 мая 2016

До кучи, раз такая пьянка, недавно столкнулся с такой бедой на Adreno (андроид девайсы)

uniform vec4 joints[MAX_COUNT];
...
if (dot(joints[i], joints[j]) < 0.0) ... // не работает dot == 0.0 всегда
if (dot(joints[i].xyz, joints[j].xyz) + joints[i].w * joints[j].w) < 0.0) ... // работает

А также с тем, что нельзя делать discard до выборки из всех переданных в шейдер семплеров.

Но это всё оффтоп.

#21
9:10, 3 мая 2016

XProger
> семплеров.

Не понял, где тут семплер ?

#22
10:13, 3 мая 2016

Роман Шувалов
> где искать источник проблемы?
Ответ, как и сам вопрос кроется в названии темы:
> на айфоне и айпаде

#23
11:08, 3 мая 2016

XProger
На Qualcomm спрашивал ? https://developer.qualcomm.com/forums/software/adreno-gpu-sdk
Слышал еще жаобы на Adreno.

#24
13:18, 3 мая 2016

XProger
> discard
Дискард вообще тупит на некоторых чипах. Кажется от нВидии, не помню, но точно помню, что дискардом лучше не пользоваться.

gammaker
> Ответ, как и сам вопрос кроется в названии темы:
> > на айфоне и айпаде
XCode умеет получать асмо-выхлоп шейдеров? Как? И какие у него еще отладочные средства для данного случая?

#25
14:33, 3 мая 2016

Роман Шувалов
> XCode умеет получать асмо-выхлоп шейдеров? Как? И какие у него еще отладочные
> средства для данного случая?
Я не знаю, никогда под них не разрабатывал и MacOS с XCode не юзал.

+ Показать
Страницы: 1 2
ПрограммированиеФорумГрафика

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