Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Godot

Ответ
 
Опции темы
Старый 24.10.2020, 01:57   #16
mingw
ПроЭктировщик
 
Аватар для mingw
 
Регистрация: 01.01.2016
Сообщений: 145
Написано 74 полезных сообщений
(для 164 пользователей)
Ответ: Вопросы

Сообщение от ant0N Посмотреть сообщение
Если кратко, GetTree() возвращает SceneTree, а это основной цикл (Main Loop) сцены.
Если подробно - https://docs.godotengine.org/en/stab...l#introduction
А если вызвать этот метод - node.Quit() - в локальном узле сцены - то, я так понимаю узел прервет распространение сигнала на дочерние узлы?
(Offline)
 
Ответить с цитированием
Старый 25.10.2020, 14:02   #17
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

Сообщение от mingw Посмотреть сообщение
А если вызвать этот метод - node.Quit() - в локальном узле сцены - то, я так понимаю узел прервет распространение сигнала на дочерние узлы?
Это что за метод такой? У Node такого нет.
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 25.10.2020, 15:31   #18
mingw
ПроЭктировщик
 
Аватар для mingw
 
Регистрация: 01.01.2016
Сообщений: 145
Написано 74 полезных сообщений
(для 164 пользователей)
Ответ: Вопросы

Сообщение от ant0N Посмотреть сообщение
Это что за метод такой? У Node такого нет.
хмм... действительно. А как сигнал прервать то? Бывают ситуации когда не надо, что бы сигнал шел дальше по дочерним узлам.

А так глянул на этот двиг, почитал доки... ну что могу сказать... это старый, добрый Blitz3D! По крайней мере именно такое впечатление он на меня производит. Конечно, он с нормальным 2Д и ещё кучей плюшек... но простота двига подкупает. Общая архитектура тоже нравится. Я вкатился в этот двиг почти сразу. Чего не скажешь о Юнити.

Последний раз редактировалось mingw, 26.10.2020 в 02:09.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
MadMedic (26.10.2020)
Старый 26.10.2020, 09:40   #19
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: Вопросы

Сообщение от mingw Посмотреть сообщение
хмм... действительно. А как сигнал прервать то? Бывают ситуации когда не надо, что бы сигнал шел дальше по дочерним узлам.
Я не очень понял что значит прервать сигнал? Какой сигнал? Что именно ты хочешь сделать?

Сообщение от mingw Посмотреть сообщение
А так глянул на этот двиг, почитал доки... ну что могу сказать... это старый, добрый Blitz3D!
В какой-то степени можно и так сказать.

Сообщение от mingw Посмотреть сообщение
Общая архитектура тоже нравится. Я вкатился в этот двиг почти сразу. Чего не скажешь о Юнити.
У меня такая же ситуация. Я уже почти год активно разрабатываю на юнити на работе, но все ещё для меня это как поедание кактуса.
__________________
Абсолютли!

Последний раз редактировалось ant0N, 26.10.2020 в 11:42.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tiranas (28.10.2020)
Старый 10.11.2020, 22:54   #20
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений
(для 5,350 пользователей)
Ответ: Вопросы

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


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

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

Размер: 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)
 
Ответить с цитированием
Старый 11.11.2020, 07:17   #21
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Вопросы

1: Двигать текстуру с определенной скоростью:
uv = UV + Time * Speed

2: Смешивать текстуры попробуй функцией:
mix (текстура1, текстура2, красныйканалвершин)
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (11.11.2020)
Старый 11.11.2020, 10:22   #22
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений
(для 5,350 пользователей)
Ответ: Вопросы

Сообщение от ARA Посмотреть сообщение
1: Двигать текстуру с определенной скоростью:
uv = UV + Time * Speed

2: Смешивать текстуры попробуй функцией:
mix (текстура1, текстура2, красныйканалвершин)
1) Не работает.

2) Канал вершин, не UV? Ты уверен? У меня вершины не раскрашены, текстуры не смешиваются.
UV попробовал, не работает.

Стоп, ты про другое?
А как я по твоему их смешиваю?
Название: Godot_смешивание_2_текстур.jpg
Просмотров: 936

Размер: 93.5 Кб


Ну, разве что ScalarMix попробовать
Название: Godot_VectorScalarMix.jpg
Просмотров: 2441

Размер: 18.9 Кб

P. S. Похоже ScalarMix действительно меньше влияет на производительность чем Mix, спасибо что напомнил
Текстуры на «сфере» по прежнему дёргаются. Втыкал туда R с UV через ScalarMix.
(Offline)
 
Ответить с цитированием
Старый 11.11.2020, 18:22   #23
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Вопросы

>> 1) Не работает.
uv = UV + 0.5
Это сдвигает текстуру (без динамики)?
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 12.11.2020, 04:35   #24
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 183
Написано 107 полезных сообщений
(для 410 пользователей)
Ответ: Вопросы

Может float UV обнулять? У него же чем больше число - тем меньше точность
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ant0N (12.11.2020)
Старый 13.11.2020, 18:35   #25
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений
(для 5,350 пользователей)
Ответ: Вопросы

Сообщение от ARA Посмотреть сообщение
>> 1) Не работает.
uv = UV + 0.5
Это сдвигает текстуру (без динамики)?
Да

Сообщение от MadMedic Посмотреть сообщение
Может float UV обнулять? У него же чем больше число - тем меньше точность
Это была моя первая мысль, но я её отмёл.

Сегодня узнал что это проблема GLES2, особенно на мобильниках.
В Годо можно повысить точность в настройках проекта (или вручную в шейдере).
Но я почему-то не увидел разницу.

Анимировать UV во фрагментом шейдере настоятельно не рекомендуется.
Предлагается смещать только в вертексном шейдере.
  1. Тут проблема как смешивать и двигать больше двух текстур.
    Потому что других вариантов кроме UV и UV2 я не знаю.
  2. И опять нет изменений. Возможно что-то упустил запутавшись, но вряд ли.
По этому вопрос:
Обнулять UV и вращать дальше, как это сделать во фрагментом шейдере?
Для GLES2 - Andorid такое не запрещено?
(Offline)
 
Ответить с цитированием
Старый 13.11.2020, 18:54   #26
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Вопросы

Да
Хм, ну тогда и с +Time проблем не должно быть. Он точно циферку корректно возвращает?

Тут проблема как смешивать и двигать больше двух текстур.
Потому что других вариантов кроме UV и UV2 я не знаю.
Ты можешь двигать с помощью одного UV хоть 10 текстур. Просто тебе надо создать 10 переменных, чтоб задавать скорость для каждой конкретной текстуры. Это будет выглядеть так:

float2 uv1 = UV + Time * SpeedTexture1;
float2 uv2 = UV + Time * SpeedTexture2;
float2 uv3 = UV + Time * SpeedTexture3;
etc

uv1, uv2, uv3 уже подставляешь в tex2D:

float3 Texture1 = tex2D(_Texture1 , uv1 );
float3 Texture2 = tex2D(_Texture2 , uv2 );
float3 Texture3 = tex2D(_Texture3 , uv3 );
etc
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ARA за это полезное сообщение:
ant0N (13.11.2020), Arton (15.11.2020), St_AnGer (13.11.2020)
Старый 14.11.2020, 08:16   #27
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопросы

Сообщение от Arton Посмотреть сообщение
Godot 3.2.3
GLES 2.0
Android, apk релизный


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



Проблема замечена на 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?
Неужели это настолько тяжёлая операция для смартфона?
В годоте gles 2 вообще лучше не трогать.

А именно с UV там примитивный баг на подуставших мобилках, который тупо не чинят.
https://github.com/godotengine/godot/issues/37935
Кстати возможно ты нашел еще один баг

Еще на gles 2 vertex color рисует не те цвета и тоже все вкурсе, но никто не чинит.
(Offline)
 
Ответить с цитированием
Старый 14.11.2020, 11:54   #28
Tiranas
Разработчик
 
Аватар для Tiranas
 
Регистрация: 11.10.2017
Сообщений: 390
Написано 74 полезных сообщений
(для 117 пользователей)
Ответ: Вопросы

Любимы дуалист Антона нарисовался, теперь опишем все баги Unity ))
__________________
Человек это или баг, или заложенное специально программное яйцо.
(Offline)
 
Ответить с цитированием
Старый 15.11.2020, 14:45   #29
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений
(для 5,350 пользователей)
Ответ: Вопросы

Сообщение от ARA Посмотреть сообщение
Хм, ну тогда и с +Time проблем не должно быть. Он точно циферку корректно возвращает?
Они есть на смартфоне, GLES 2, при смещение UV с течением времени во фрагментном шейдере.
В вершинном шейдере проблем нет.

Никакое принудительно выставление точности не работает.
В фрагментах тупо нельзя анимировать UV — деградируют.
Спустя ~3 минуты:
Название: GLES2_Android_UV_Error.jpg
Просмотров: 719

Размер: 61.9 Кб



Сообщение от ARA Посмотреть сообщение
Ты можешь двигать с помощью одного UV хоть 10 текстур. Просто тебе надо создать 10 переменных, чтоб задавать скорость для каждой конкретной текстуры.
Перехожу на код вместо нодов, так оно и есть.
Однако вопрос, а если двигать в вершинном, то как тогда «анимировать 10 текстур»?

Я их просто в UV и UV2 втыкаю:
shader_type spatial;
render_mode unshaded;

uniform sampler2D Texture_0 hint_albedo;
uniform sampler2D Texture_1 hint_albedo;

void vertex() {
    
    
vec2 speed_0 vec2(0.10.02);
    
vec2 speed_1 vec2(-0.1, -0.02);
    
    
vec2 uv_0 TIME speed_0;
    
vec2 uv_1 TIME speed_1;
    
    
vec2 uv_out UV uv_0;
    
vec2 uv_out2 UV uv_1;
    
    
UV uv_out.xy;
    
UV2 uv_out2.xy;
}

void fragment() {
        
    
vec4 Tex_0 texture(Texture_0UV);
    
vec4 Tex_1 texture(Texture_1UV2);
    
    
vec4 Color Tex_0 Tex_1;
    
    
ALBEDO Color.rgb;



Сообщение от Nex Посмотреть сообщение
Еще на gles 2 vertex color рисует не те цвета и тоже все вкурсе, но никто не чинит.
Не заметил такой проблемы. Это происходит на разном железе?

Сообщение от Nex Посмотреть сообщение
Кстати возможно ты нашел еще один баг
Ты точно моё сообщение читал?
По твоей ссылке баг на конкретном устройстве.
(Offline)
 
Ответить с цитированием
Старый 15.11.2020, 18:21   #30
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Вопросы

Интересно сработает ли это:

shader_type spatial;
render_mode unshaded;

uniform sampler2D Texture_0 : hint_albedo;
uniform sampler2D Texture_1 : hint_albedo;
varying flat vec2 uv_out;
varying flat vec2 uv_out2;

void vertex() {
    
    vec2 speed_0 = vec2(0.1, 0.02);
    vec2 speed_1 = vec2(-0.1, -0.02);
    
    vec2 uv_0 = TIME * speed_0;
    vec2 uv_1 = TIME * speed_1;
    
    uv_out = UV + uv_0;
    uv_out2 = UV + uv_1;
    
}

void fragment() {
        
    vec4 Tex_0 = texture(Texture_0, uv_out);
    vec4 Tex_1 = texture(Texture_1, uv_out2);
    
    vec4 Color = Tex_0 + Tex_1;
    
    ALBEDO = Color.rgb;
}
Вместо flat можешь попробовать
flat - The value is not interpolated
noperspective - The value is linearly interpolated in window-space
smooth - The value is interpolated in a perspective-correct fashion. This is the default
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com