ShaderPrecisionFormat что это и с чем едят?

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Здравствуйте уважаемое сообщество!

Начал разбираться в WebGL эмуляции и пришел к выводу что в принципе для подмены WebGL Report Hash (на сайте https://browserleaks.com/webgl) достаточно изменить только ShaderPrecision в WebGL. Выглядит подмена так:
PHP:
Instance.WebGLPreferences.SetShaderPrecisionFormat(ShaderType.Fragment, ShaderPrecisionType.LowFloat, new ShaderPrecisionFormat(16, 16, 10));

Instance.WebGLPreferences.SetShaderPrecisionFormat(ShaderType.Vertex, ShaderPrecisionType.LowInt, new ShaderPrecisionFormat(32, 32, 0));

Для корректной подмены этих значений надо разобраться какой параметр и в каких рамках можно изменять дабы "не попасться". Поэтому интересуют следующие вопросы:
1) Для каждого ли из ShaderType (Fragment и Vertex) существуют все из возможных вариантов ShaderPrecisionType (т.е. LowInt / MediumInt / HighInt и их Float аналоги)?;
2) Судя из документации для ShaderPrecisionType Int первое значение в "new ShaderPrecisionFormat(0, 16, 10)" всегда должно быть 0. Верно?;
3) Судя из найденой в гугле инфы все значения в "new ShaderPrecisionFormat(128, 128, 128-)" максимально могут иметь значение 128. Верно?;
4) Какие реальные показатели ShaderPrecisionType значений могут быть? Подозреваю что "new ShaderPrecisionFormat(128, 128, 128-)" встретить нереально.
5) Сильно ли они могут различаться? Например при (ShaderType.Fragment, ShaderPrecisionType.LowFloat, new ShaderPrecisionFormat(16, 16, 10)) может ли MediumFloat быть (ShaderType.Fragment, ShaderPrecisionType.MediumFloat, new ShaderPrecisionFormat(128, 128, 128-)) или все же значения должны быть приближенными, например new ShaderPrecisionFormat(18, 18, 12)?

Благодарю за внимание! С уважением, Олег.
 

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
По дефолту Instance.WebGLPreferences.Save() сохранил следующие настройки ShaderPrecision:
Код:
{"modal.shader.vertex.lowfloat":"127;127;23","modal.shader.vertex.mediumfloat":"127;127;23","modal.shader.vertex.highfloat":"127;127;23","modal.shader.vertex.lowint":"31;30;0","modal.shader.vertex.mediumint":"31;30;0","modal.shader.vertex.highint":"31;30;0","modal.shader.fragment.lowfloat":"127;127;23","modal.shader.fragment.mediumfloat":"127;127;23","modal.shader.fragment.highfloat":"127;127;23","modal.shader.fragment.lowint":"31;30;0","modal.shader.fragment.mediumint":"31;30;0","modal.shader.fragment.highint":"31;30;0"}

Как видно для ShaderPrecisionType Int значения "31;30;0", а для всех Float "127;127;23". Так и должно быть или разница между LowInt / MediumInt / HighInt допустима? В каких рамках?

Уж если подделывать FingerPrint то подделывать.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Хлопотно это, тем более с таким подходом к делу, все и вся. Чем не устраивает стандартная опция?
При работе через код не генерируется ничего, ниодной позиции. Нужно самому все генерить.

Хлопотно это да, но лучше знать что делаешь чем потом думать, а чего же это меня палят?

Я думаю лучше раз сделать, но нормально...
 

bercut

Новичок
Регистрация
16.10.2018
Сообщения
4
Благодарностей
0
Баллы
1
Adamastor, пришел к чему-то?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)