Тема: Вопросы
Показать сообщение отдельно
Старый 10.11.2020, 22:54   #20
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Вопросы

Godot 3.2.3
GLES 2.0
Android, apk релизный


Сделал простой шейдер, где смешиваются 2 текстуры, с движением UV.
На ПК работает как надо.
Однако на Андроиде, спустя минуту текстуры начинают едва заметно тормозить. Ещё через 2, ощутимо двигаются рывками, пикселизируются. Остальная сцена проигрывается гладко.
Текстуры натянуты на плоский меш, со сферообразно искажённой развёрткой.

Название: Проблема_Godot_Android_shader.jpg
Просмотров: 1063

Размер: 112.9 Кб


Проблема замечена на Huawei P8 Lite и P10, но по всей видимости дело не в аппаратах.
Двигать UV пробовал по разному. Разница только в скорости движения, чем быстрее движется, тем скорее начинаются рывки.

В чём может быть дело, как решить?

Навсякий случай, генерируемый VisualShaders код:
shader_type spatial;
render_mode specular_schlick_ggx, depth_test_disable, unshaded, vertex_lighting;

uniform sampler2D Texture : hint_albedo;
uniform sampler2D Texture2 : hint_albedo;



void vertex() {
// Output:0

}

void fragment() {
// Input:5
	vec3 n_out5p0 = vec3(UV, 0.0);

// Input:8
	float n_out8p0 = TIME;

// VectorMix:17
	vec3 n_in17p2 = vec3(0.03000, -0.02000, 0.00000);
	vec3 n_out17p0 = mix(n_out5p0, vec3(n_out8p0), n_in17p2);

// TextureUniform:2
	vec3 n_out2p0;
	float n_out2p1;
	{
		vec4 n_tex_read = texture(Texture, n_out17p0.xy);
		n_out2p0 = n_tex_read.rgb;
		n_out2p1 = n_tex_read.a;
	}

// VectorMix:18
	vec3 n_in18p2 = vec3(-0.03000, 0.02000, 0.00000);
	vec3 n_out18p0 = mix(n_out5p0, vec3(n_out8p0), n_in18p2);

// TextureUniform:3
	vec3 n_out3p0;
	float n_out3p1;
	{
		vec4 n_tex_read = texture(Texture2, n_out18p0.xy);
		n_out3p0 = n_tex_read.rgb;
		n_out3p1 = n_tex_read.a;
	}

// VectorOp:16
	vec3 n_out16p0 = n_out2p0 + n_out3p0;

// Output:0
	ALBEDO = n_out16p0;

}

void light() {
// Output:0

}



Второй вопрос, что бы не ходить дважды.

Тоже шейдер с расчётом на телефон, смешиваются 2 текстуры по Vertex-маске через VectorMix.
Почему же этот шейдер на единственной такой поверхности, в 35 треугольников отнимает ~10 FPS?
Неужели это настолько тяжёлая операция для смартфона?
(Offline)
 
Ответить с цитированием