Эмуляция Web GL

datway1337

Пользователь
Регистрация
10.04.2018
Сообщения
74
Благодарностей
3
Баллы
8
Всем привет.

Нашел вот такой пример на нашем форуме.
Возможно ли как-то полностью эмулировать Web GL в зенке?
Проверял на https://browserleaks.com/webgl
Встроенная эмуляция вроде как не канает, хэш всегда один получается.

Код:
public void WebGLgen()
{
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.Renderer, "Mozilla");
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.Vendor, "Mozilla");
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.Version, "WebGL 1.0");
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.ShadingLanguageVersion, "WebGL GLSL ES 1.0");
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.UnmaskedRenderer, "Google Inc. ");
    Instance.WebGLPreferences.Set(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLPreference.UnmaskedVendor, "ANGLE (Software Adapter Direct3D11 vs_5_0 ps_5_0)");

    var extensions = new List<ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension>();
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.ANGLE_instanced_arrays);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_blend_minmax);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_color_buffer_float);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_color_buffer_half_float);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_frag_depth);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_sRGB);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_shader_texture_lod);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_texture_filter_anisotropic);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.EXT_disjoint_timer_query);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.OES_element_index_uint);
    extensions.Add(ZennoLab.InterfacesLibrary.Enums.Browser.WebGLExtension.OES_standard_derivatives);
    Instance.WebGLPreferences.SetExtensions(extensions);

    // set webgl shader settings
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Fragment, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.MediumFloat, new ShaderPrecisionFormat(15, 15, 10));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Fragment, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.LowFloat, new ShaderPrecisionFormat(15, 15, 10));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Fragment, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.HighInt, new ShaderPrecisionFormat(31, 31, 0));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Fragment, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.MediumInt, new ShaderPrecisionFormat(15, 15, 0));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Fragment, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.LowInt, new ShaderPrecisionFormat(15, 15, 0));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Vertex, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.HighInt, new ShaderPrecisionFormat(31, 31, 0));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Vertex, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.MediumInt, new ShaderPrecisionFormat(31, 31, 0));
    Instance.WebGLPreferences.SetShaderPrecisionFormat(ZennoLab.InterfacesLibrary.Enums.Browser.ShaderType.Vertex, ZennoLab.InterfacesLibrary.Enums.Browser.ShaderPrecisionType.LowInt, new ShaderPrecisionFormat(31, 31, 0));

    // set availiable contexts
    var contexts = new List<ZennoLab.InterfacesLibrary.Enums.Browser.CanvasContext>();
    contexts.Add(ZennoLab.InterfacesLibrary.Enums.Browser.CanvasContext.Canvas2D);
    contexts.Add(ZennoLab.InterfacesLibrary.Enums.Browser.CanvasContext.WebGL1);
    Instance.WebGLPreferences.SetAvailiableContexts(contexts);
}

public void WebGLSave()
{
    File.WriteAllText(@"C:\WebGL\gl.txt", Instance.WebGLPreferences.Save());
}

public void WebGLLoad()
{
    string wglJSON = File.ReadAllText(@"C:\WebGL\gl.txt");
    Project.SendInfoToLog(wglJSON);
    Instance.WebGLPreferences.Load(wglJSON);
}
 

gigavat

Super Moderator
Регистрация
17.11.2011
Сообщения
112
Благодарностей
88
Баллы
28
Можете приложить шаблон с этим сниппетом? Интересно как вы применяете сниппет.
Сейчас по умолчанию включена настройка эмуляции Canvas и webgl (в настройках профиля браузера). Она у вас включена ? И вообще какие настройки профиля браузера ?
Если включена и вы в ProjectMaker, нажимаете "С начала" между проверками ?

Если у вас выключена эмуляция canvas/webgl в профиле браузера, то чтобы началось меняться WebGL Image Hash нужно сделать
Код:
Instance.CanvasRenderMode = ZennoLab.InterfacesLibrary.Enums.Browser.CanvasMode.Emulate;
А если вы смотрите на WebGL Report Hash, то сниппет каждый раз ставит одни и те же данные. Логично что хеш от них будет одинаковый, опять же если выключена эмуляция canvas/webgl в профиле браузера.

А так из коробки хеши меняются.
 

Amigo123

Client
Регистрация
18.01.2020
Сообщения
25
Благодарностей
0
Баллы
1
Добрый день, проблема со встроенной эмуляцией WebGL ! WebGL Report Hash по https://browserleaks.com/webgl через каждые 3-4 эмуляции нового профиля значение повторяется. Как решить ? Может есть код эмуляции с большим диапозоном ?
 

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