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)?

Благодарю за внимание! С уважением, Олег.
 
По дефолту 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 то подделывать.
 
Хлопотно это, тем более с таким подходом к делу, все и вся. Чем не устраивает стандартная опция?
При работе через код не генерируется ничего, ниодной позиции. Нужно самому все генерить.

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

Я думаю лучше раз сделать, но нормально...
 
Adamastor, пришел к чему-то?
 

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