1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-29 04:40:03 -04:00

Add custom shader_version on glow renderer (#1993)

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
Adia Robbie
2022-09-06 15:08:16 +07:00
committed by GitHub
parent 7fae634dc3
commit b43a8626cf
9 changed files with 30 additions and 17 deletions

View File

@@ -106,20 +106,20 @@ impl Painter {
gl: Arc<glow::Context>,
pp_fb_extent: Option<[i32; 2]>,
shader_prefix: &str,
shader_version: Option<ShaderVersion>,
) -> Result<Painter, String> {
crate::profile_function!();
crate::check_for_gl_error_even_in_release!(&gl, "before Painter::new");
let max_texture_side = unsafe { gl.get_parameter_i32(glow::MAX_TEXTURE_SIZE) } as usize;
let shader_version = ShaderVersion::get(&gl);
let is_webgl_1 = shader_version == ShaderVersion::Es100;
let header = shader_version.version_declaration();
let shader = shader_version.unwrap_or_else(|| ShaderVersion::get(&gl));
let is_webgl_1 = shader == ShaderVersion::Es100;
let header = shader.version_declaration();
tracing::debug!("Shader header: {:?}.", header);
let srgb_support = gl.supported_extensions().contains("EXT_sRGB");
tracing::debug!("SRGB Support: {:?}.", srgb_support);
let (post_process, srgb_support_define) = match (shader_version, srgb_support) {
let (post_process, srgb_support_define) = match (shader, srgb_support) {
// WebGL2 support sRGB default
(ShaderVersion::Es300, _) | (ShaderVersion::Es100, true) => unsafe {
// Add sRGB support marker for fragment shader
@@ -156,7 +156,7 @@ impl Painter {
"{}\n{}\n{}\n{}",
header,
shader_prefix,
if shader_version.is_new_shader_interface() {
if shader.is_new_shader_interface() {
"#define NEW_SHADER_INTERFACE\n"
} else {
""
@@ -172,7 +172,7 @@ impl Painter {
header,
shader_prefix,
srgb_support_define,
if shader_version.is_new_shader_interface() {
if shader.is_new_shader_interface() {
"#define NEW_SHADER_INTERFACE\n"
} else {
""
@@ -234,7 +234,7 @@ impl Painter {
u_screen_size,
u_sampler,
is_webgl_1,
is_embedded: matches!(shader_version, ShaderVersion::Es100 | ShaderVersion::Es300),
is_embedded: matches!(shader, ShaderVersion::Es100 | ShaderVersion::Es300),
vao,
srgb_support,
post_process,