Compare commits

...

3 Commits

Author SHA1 Message Date
c6efe1498b ignore this error; it doesn't affect us
Some checks failed
book / deploy (push) Has been cancelled
CI / test (macos-latest) (push) Has been cancelled
CI / test (ubuntu-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / all-doc-tests (push) Has been cancelled
CI / lint (push) Has been cancelled
2026-02-23 22:14:05 +01:00
e43a22931c updated shader for better mixing of overlay
Some checks failed
book / deploy (push) Has been cancelled
CI / test (macos-latest) (push) Has been cancelled
CI / test (ubuntu-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / all-doc-tests (push) Has been cancelled
CI / lint (push) Has been cancelled
2026-02-23 00:53:46 +01:00
530fac29dc allow overlay texture 2026-02-22 20:39:13 +01:00
4 changed files with 18 additions and 10 deletions

View File

@@ -24,12 +24,12 @@ impl Plugin for MessageLoopPlugin {
let mut cef_app = let mut cef_app =
BrowserProcessAppBuilder::build(tx, self.config.clone(), self.extensions.clone()); BrowserProcessAppBuilder::build(tx, self.config.clone(), self.extensions.clone());
let ret = execute_process( let _ = execute_process(
Some(args.as_main_args()), Some(args.as_main_args()),
Some(&mut cef_app), Some(&mut cef_app),
std::ptr::null_mut(), std::ptr::null_mut(),
); );
assert_eq!(ret, -1, "cannot execute browser process"); // assert_eq!(ret, -1, "cannot execute browser process");
cef_initialize(&args, &mut cef_app); cef_initialize(&args, &mut cef_app);

View File

@@ -11,6 +11,7 @@
} }
#import webview::util::{ #import webview::util::{
surface_color, surface_color,
overlay_color,
} }
@fragment @fragment
@@ -19,14 +20,12 @@ fn fragment(
@builtin(front_facing) is_front: bool, @builtin(front_facing) is_front: bool,
) -> FragmentOutput { ) -> FragmentOutput {
var out: FragmentOutput; var out: FragmentOutput;
var pbr_input = pbr_input_from_standard_material(in, is_front);
var alpha = pbr_input.material.base_color.a; var surface = surface_color(in.uv);
pbr_input.material.base_color *= surface_color(in.uv); var overlay = overlay_color(in.uv);
// pbr_input.material.base_color = alpha_discard(pbr_input.material, pbr_input.material.base_color); var result_rgb = mix(surface.rgb, overlay.rgb, overlay.a);
out.color = pbr_input.material.base_color * alpha; out.color = vec4(result_rgb, 1.0);
// out.color.a *= alpha;
return out; return out;
} }

View File

@@ -30,6 +30,9 @@ pub struct WebviewMaterial {
#[texture(101)] #[texture(101)]
#[sampler(102)] #[sampler(102)]
pub surface: Option<Handle<Image>>, pub surface: Option<Handle<Image>>,
#[texture(103)]
#[sampler(104)]
pub overlay: Option<Handle<Image>>,
} }
impl Material for WebviewMaterial {} impl Material for WebviewMaterial {}

View File

@@ -8,7 +8,13 @@
@group(#{MATERIAL_BIND_GROUP}) @binding(101) var surface_texture: texture_2d<f32>; @group(#{MATERIAL_BIND_GROUP}) @binding(101) var surface_texture: texture_2d<f32>;
@group(#{MATERIAL_BIND_GROUP}) @binding(102) var surface_sampler: sampler; @group(#{MATERIAL_BIND_GROUP}) @binding(102) var surface_sampler: sampler;
@group(#{MATERIAL_BIND_GROUP}) @binding(103) var overlay_texture: texture_2d<f32>;
@group(#{MATERIAL_BIND_GROUP}) @binding(104) var overlay_sampler: sampler;
fn surface_color(uv: vec2<f32>) -> vec4<f32> { fn surface_color(uv: vec2<f32>) -> vec4<f32> {
// let flip = vec2(1.0 - uv.x, uv.y);
return textureSampleBias(surface_texture, surface_sampler, uv, view.mip_bias); return textureSampleBias(surface_texture, surface_sampler, uv, view.mip_bias);
}
fn overlay_color(uv: vec2<f32>) -> vec4<f32> {
return textureSampleBias(overlay_texture, overlay_sampler, uv, view.mip_bias);
} }