#shader parallax uv mapping for simple parrallax horizontal scrolling

1 messages · Page 1 of 1 (latest)

wooden vessel
#

Full disclosure - total shader noob. I want to apply a shader material to a train window that will spawn 2-3 Rectangles with different png materials that will move horizontally with parallax effect.

Its supposed to be a train window. I tied to make it work but my brain got fried from reading shaders.

I tried using StandartMaterial, but it only shows grey rectangles. And with ExtendedMaterial I think we cannot use uv or something?

#
#import bevy_pbr::pbr_fragment::pbr_input_from_standard_material
#import bevy_pbr::mesh_view_bindings::globals

struct MyExtendedMaterial {
    speed: f32,
    blur_strength: f32,
}

@group(#{MATERIAL_BIND_GROUP}) @binding(100)
var<uniform> my_extended_material: MyExtendedMaterial;

#ifdef PREPASS_PIPELINE
#import bevy_pbr::prepass_io::{VertexOutput, FragmentOutput}
#import bevy_pbr::pbr_deferred_functions::deferred_output
#else
#import bevy_pbr::forward_io::{VertexOutput, FragmentOutput}
#import bevy_pbr::pbr_functions::main_pass_post_lighting_processing
#endif

@fragment
fn fragment(
    in: VertexOutput,
    @builtin(front_facing) is_front: bool,
) -> FragmentOutput {
    var pbr_input = pbr_input_from_standard_material(in, is_front);

    let time = globals.time;
    

#ifdef PREPASS_PIPELINE
    let out = deferred_output(in, pbr_input);
#else
    var out: FragmentOutput;
    out.color = vec4<f32>(pbr_input.material.base_color.rgb, pbr_input.material.base_color.a);
    out.color = main_pass_post_lighting_processing(pbr_input, out.color);
#endif

    return out;
}
wooden vessel
wooden vessel
#

I see uv moving but it just blends pixels it seems, not cycles over image