Last active
October 1, 2025 20:49
-
-
Save DGriffin91/76a55cfda118c1da9ffa5af7b7fa57d3 to your computer and use it in GitHub Desktop.
Bevy ocean compute shader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Runs ocean shader from (copied slang wgsl output) https://shader-slang.org/slang-playground/ | |
| # Based on https://www.shadertoy.com/view/XdlSDs. | |
| [package] | |
| name = "ocean_shader" | |
| version = "0.1.0" | |
| edition = "2024" | |
| [dependencies] | |
| bevy = { version = "0.17.1", features = ["webgpu"] } | |
| # bevy run --release web --open | |
| # https://github.com/TheBevyFlock/bevy_cli |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| use bevy::{ | |
| asset::RenderAssetUsages, | |
| prelude::*, | |
| render::{ | |
| Render, RenderApp, RenderStartup, RenderSystems, | |
| extract_resource::{ExtractResource, ExtractResourcePlugin}, | |
| render_asset::RenderAssets, | |
| render_graph::{self, RenderGraph, RenderLabel}, | |
| render_resource::{ | |
| binding_types::{texture_storage_2d, uniform_buffer}, | |
| *, | |
| }, | |
| renderer::{RenderContext, RenderDevice, RenderQueue}, | |
| texture::GpuImage, | |
| }, | |
| window::WindowResolution, | |
| }; | |
| use std::borrow::Cow; | |
| /// This example uses a shader source file from the assets subdirectory | |
| const SHADER_ASSET_PATH: &str = "ocean.wgsl"; | |
| const SIZE: UVec2 = UVec2::new(2560, 1440); | |
| const WORKGROUP_SIZE: u32 = 16; | |
| fn main() { | |
| App::new() | |
| .insert_resource(ClearColor(Color::BLACK)) | |
| .insert_resource(bevy::winit::WinitSettings { | |
| focused_mode: bevy::winit::UpdateMode::Continuous, | |
| unfocused_mode: bevy::winit::UpdateMode::Continuous, | |
| }) | |
| .add_plugins(( | |
| DefaultPlugins | |
| .set(WindowPlugin { | |
| primary_window: Some(Window { | |
| resolution: WindowResolution::new(SIZE.x, SIZE.y) | |
| .with_scale_factor_override(1.0), | |
| // Fullscreen crashes on DX12 | |
| // mode: bevy::window::WindowMode::Fullscreen( | |
| // MonitorSelection::Primary, | |
| // VideoModeSelection::Current, | |
| // ), | |
| mode: bevy::window::WindowMode::Windowed, | |
| // uncomment for unthrottled FPS | |
| present_mode: bevy::window::PresentMode::AutoNoVsync, | |
| ..default() | |
| }), | |
| ..default() | |
| }) | |
| .set(ImagePlugin::default_nearest()), | |
| OceanComputePlugin, | |
| bevy::diagnostic::LogDiagnosticsPlugin::default(), | |
| bevy::diagnostic::FrameTimeDiagnosticsPlugin::default(), | |
| )) | |
| .add_systems(Startup, setup) | |
| .add_systems(Update, switch_textures) | |
| .add_systems(Update, update_uniform) | |
| .run(); | |
| } | |
| fn setup(mut commands: Commands, mut images: ResMut<Assets<Image>>) { | |
| let mut image = Image::new_target_texture(SIZE.x, SIZE.y, TextureFormat::Rgba8Unorm); | |
| image.asset_usage = RenderAssetUsages::RENDER_WORLD; | |
| image.texture_descriptor.usage = | |
| TextureUsages::COPY_DST | TextureUsages::STORAGE_BINDING | TextureUsages::TEXTURE_BINDING; | |
| let image0 = images.add(image.clone()); | |
| commands.spawn(( | |
| Sprite { | |
| image: image0.clone(), | |
| custom_size: Some(SIZE.as_vec2()), | |
| flip_y: true, | |
| ..default() | |
| }, | |
| Transform::from_scale(Vec3::ONE), | |
| )); | |
| commands.spawn(Camera2d); | |
| commands.insert_resource(OceanImages { texture_a: image0 }); | |
| commands.insert_resource(OceanUniforms::default()); | |
| } | |
| fn update_uniform( | |
| mut cursor_moved: MessageReader<CursorMoved>, | |
| mut ocean_uniforms: ResMut<OceanUniforms>, | |
| time: Res<Time>, | |
| ) { | |
| for event in cursor_moved.read() { | |
| ocean_uniforms.mouse_position = vec4(event.position.x, event.position.y, 0.0, 0.0); | |
| } | |
| ocean_uniforms.time = vec4(time.elapsed_secs(), 0.0, 0.0, 0.0); | |
| } | |
| // Switch texture to display every frame to show the one that was written to most recently. | |
| fn switch_textures(images: Res<OceanImages>, mut sprite: Single<&mut Sprite>) { | |
| sprite.image = images.texture_a.clone(); | |
| } | |
| struct OceanComputePlugin; | |
| #[derive(Debug, Hash, PartialEq, Eq, Clone, RenderLabel)] | |
| struct OceanLabel; | |
| impl Plugin for OceanComputePlugin { | |
| fn build(&self, app: &mut App) { | |
| // Extract the game of life image resource from the main world into the render world | |
| // for operation on by the compute shader and display on the sprite. | |
| app.add_plugins(( | |
| ExtractResourcePlugin::<OceanImages>::default(), | |
| ExtractResourcePlugin::<OceanUniforms>::default(), | |
| )); | |
| let render_app = app.sub_app_mut(RenderApp); | |
| render_app | |
| .add_systems(RenderStartup, init_ocean_pipeline) | |
| .add_systems( | |
| Render, | |
| prepare_bind_group.in_set(RenderSystems::PrepareBindGroups), | |
| ); | |
| let mut render_graph = render_app.world_mut().resource_mut::<RenderGraph>(); | |
| render_graph.add_node(OceanLabel, OceanNode::default()); | |
| render_graph.add_node_edge(OceanLabel, bevy::render::graph::CameraDriverLabel); | |
| } | |
| } | |
| #[derive(Resource, Clone, ExtractResource)] | |
| struct OceanImages { | |
| texture_a: Handle<Image>, | |
| } | |
| #[derive(Resource, Clone, ExtractResource, ShaderType, Default)] | |
| struct OceanUniforms { | |
| // Just matching the @align(16) that was in the existing shader. | |
| time: Vec4, | |
| mouse_position: Vec4, | |
| } | |
| #[derive(Resource)] | |
| struct OceanImageBindGroup(BindGroup); | |
| fn prepare_bind_group( | |
| mut commands: Commands, | |
| pipeline: Res<OceanPipeline>, | |
| gpu_images: Res<RenderAssets<GpuImage>>, | |
| ocean_images: Res<OceanImages>, | |
| ocean_uniforms: Res<OceanUniforms>, | |
| render_device: Res<RenderDevice>, | |
| queue: Res<RenderQueue>, | |
| ) { | |
| let view_a = gpu_images.get(&ocean_images.texture_a).unwrap(); | |
| // Uniform buffer is used here to demonstrate how to set up a uniform in a compute shader | |
| // Alternatives such as storage buffers or push constants may be more suitable for your use case | |
| let mut uniform_buffer = UniformBuffer::from(ocean_uniforms.into_inner()); | |
| uniform_buffer.write_buffer(&render_device, &queue); | |
| commands.insert_resource(OceanImageBindGroup(render_device.create_bind_group( | |
| None, | |
| &pipeline.texture_bind_group_layout, | |
| &BindGroupEntries::with_indices(((0, &view_a.texture_view), (1, &uniform_buffer))), | |
| ))); | |
| } | |
| #[derive(Resource)] | |
| struct OceanPipeline { | |
| texture_bind_group_layout: BindGroupLayout, | |
| update_pipeline: CachedComputePipelineId, | |
| } | |
| fn init_ocean_pipeline( | |
| mut commands: Commands, | |
| render_device: Res<RenderDevice>, | |
| asset_server: Res<AssetServer>, | |
| pipeline_cache: Res<PipelineCache>, | |
| ) { | |
| let texture_bind_group_layout = render_device.create_bind_group_layout( | |
| "OceanImages", | |
| &BindGroupLayoutEntries::sequential( | |
| ShaderStages::COMPUTE, | |
| ( | |
| texture_storage_2d(TextureFormat::Rgba8Unorm, StorageTextureAccess::WriteOnly), | |
| uniform_buffer::<OceanUniforms>(false), | |
| ), | |
| ), | |
| ); | |
| let shader = asset_server.load(SHADER_ASSET_PATH); | |
| let update_pipeline = pipeline_cache.queue_compute_pipeline(ComputePipelineDescriptor { | |
| layout: vec![texture_bind_group_layout.clone()], | |
| shader, | |
| entry_point: Some(Cow::from("imageMain")), | |
| ..default() | |
| }); | |
| commands.insert_resource(OceanPipeline { | |
| texture_bind_group_layout, | |
| update_pipeline, | |
| }); | |
| } | |
| #[derive(Default)] | |
| struct OceanNode; | |
| impl render_graph::Node for OceanNode { | |
| fn run( | |
| &self, | |
| _graph: &mut render_graph::RenderGraphContext, | |
| render_context: &mut RenderContext, | |
| world: &World, | |
| ) -> Result<(), render_graph::NodeRunError> { | |
| let Some(bind_group) = world.get_resource::<OceanImageBindGroup>() else { | |
| return Ok(()); | |
| }; | |
| let pipeline_cache = world.resource::<PipelineCache>(); | |
| let pipeline = world.resource::<OceanPipeline>(); | |
| let mut pass = render_context | |
| .command_encoder() | |
| .begin_compute_pass(&ComputePassDescriptor::default()); | |
| let Some(update_pipeline) = pipeline_cache.get_compute_pipeline(pipeline.update_pipeline) | |
| else { | |
| return Ok(()); | |
| }; | |
| pass.set_bind_group(0, &bind_group.0, &[]); | |
| pass.set_pipeline(update_pipeline); | |
| pass.dispatch_workgroups(SIZE.x / WORKGROUP_SIZE, SIZE.y / WORKGROUP_SIZE, 1); | |
| Ok(()) | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // copied slang wgsl output from ocean example from https://shader-slang.org/slang-playground/ | |
| @binding(0) @group(0) var outputTexture_0 : texture_storage_2d<rgba8unorm, write>; | |
| struct GlobalParams_std140_0 | |
| { | |
| @align(16) time_0 : f32, | |
| @align(16) mousePosition_0 : vec4<f32>, | |
| }; | |
| @binding(1) @group(0) var<uniform> globalParams_0 : GlobalParams_std140_0; | |
| struct DiffPair_float_0 | |
| { | |
| primal_0 : f32, | |
| differential_0 : f32, | |
| }; | |
| fn _d_sqrt_0( dpx_0 : ptr<function, DiffPair_float_0>, dOut_0 : f32) | |
| { | |
| var _S1 : f32 = 0.5f / sqrt(max(1.00000001168609742e-07f, (*dpx_0).primal_0)) * dOut_0; | |
| (*dpx_0).primal_0 = (*dpx_0).primal_0; | |
| (*dpx_0).differential_0 = _S1; | |
| return; | |
| } | |
| struct DiffPair_vectorx3Cfloatx2C2x3E_0 | |
| { | |
| primal_0 : vec2<f32>, | |
| differential_0 : vec2<f32>, | |
| }; | |
| fn _d_dot_0( dpx_1 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, dpy_0 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, dOut_1 : f32) | |
| { | |
| var x_d_result_0 : vec2<f32>; | |
| x_d_result_0[i32(0)] = (*dpy_0).primal_0[i32(0)] * dOut_1; | |
| var y_d_result_0 : vec2<f32>; | |
| y_d_result_0[i32(0)] = (*dpx_1).primal_0[i32(0)] * dOut_1; | |
| x_d_result_0[i32(1)] = (*dpy_0).primal_0[i32(1)] * dOut_1; | |
| y_d_result_0[i32(1)] = (*dpx_1).primal_0[i32(1)] * dOut_1; | |
| (*dpx_1).primal_0 = (*dpx_1).primal_0; | |
| (*dpx_1).differential_0 = x_d_result_0; | |
| (*dpy_0).primal_0 = (*dpy_0).primal_0; | |
| (*dpy_0).differential_0 = y_d_result_0; | |
| return; | |
| } | |
| fn _d_cos_0( dpx_2 : ptr<function, DiffPair_float_0>, dOut_2 : f32) | |
| { | |
| var _S2 : f32 = - sin((*dpx_2).primal_0) * dOut_2; | |
| (*dpx_2).primal_0 = (*dpx_2).primal_0; | |
| (*dpx_2).differential_0 = _S2; | |
| return; | |
| } | |
| fn _d_sin_0( dpx_3 : ptr<function, DiffPair_float_0>, dOut_3 : f32) | |
| { | |
| var _S3 : f32 = cos((*dpx_3).primal_0) * dOut_3; | |
| (*dpx_3).primal_0 = (*dpx_3).primal_0; | |
| (*dpx_3).differential_0 = _S3; | |
| return; | |
| } | |
| fn createRotationMatrixAxisAngle_0( axis_0 : vec3<f32>, angle_0 : f32) -> mat3x3<f32> | |
| { | |
| var s_0 : f32 = sin(angle_0); | |
| var c_0 : f32 = cos(angle_0); | |
| var oc_0 : f32 = 1.0f - c_0; | |
| var _S4 : f32 = axis_0.x; | |
| var _S5 : f32 = oc_0 * _S4; | |
| var _S6 : f32 = axis_0.y; | |
| var _S7 : f32 = _S5 * _S6; | |
| var _S8 : f32 = axis_0.z; | |
| var _S9 : f32 = _S8 * s_0; | |
| var _S10 : f32 = oc_0 * _S8; | |
| var _S11 : f32 = _S10 * _S4; | |
| var _S12 : f32 = _S6 * s_0; | |
| var _S13 : f32 = oc_0 * _S6; | |
| var _S14 : f32 = _S13 * _S8; | |
| var _S15 : f32 = _S4 * s_0; | |
| return mat3x3<f32>(_S5 * _S4 + c_0, _S7 - _S9, _S11 + _S12, _S7 + _S9, _S13 * _S6 + c_0, _S14 - _S15, _S11 - _S12, _S14 + _S15, _S10 * _S8 + c_0); | |
| } | |
| fn getRay_0( fragCoord_0 : vec2<f32>, resolution_0 : vec2<f32>) -> vec3<f32> | |
| { | |
| var _S16 : f32 = resolution_0.x; | |
| var _S17 : f32 = resolution_0.y; | |
| var uv_0 : vec2<f32> = (fragCoord_0.xy / resolution_0.xy * vec2<f32>(2.0f) - vec2<f32>(1.0f)) * vec2<f32>(_S16 / _S17, 1.0f); | |
| var proj_0 : vec3<f32> = normalize(vec3<f32>(uv_0.x, uv_0.y, 1.5f)); | |
| var _S18 : bool; | |
| if(_S16 < 40.0f) | |
| { | |
| _S18 = true; | |
| } | |
| else | |
| { | |
| _S18 = _S17 < 40.0f; | |
| } | |
| if(_S18) | |
| { | |
| return proj_0; | |
| } | |
| var normalizedMouse_0 : vec2<f32> = globalParams_0.mousePosition_0.xy / resolution_0; | |
| var _S19 : mat3x3<f32> = createRotationMatrixAxisAngle_0(vec3<f32>(0.0f, -1.0f, 0.0f), 3.0f * ((1.0f - normalizedMouse_0.x + 0.5f) * 2.0f - 1.0f)); | |
| const _S20 : vec3<f32> = vec3<f32>(1.0f, 0.0f, 0.0f); | |
| var _S21 : f32 = normalizedMouse_0.y; | |
| var _S22 : f32; | |
| if(_S21 == 0.0f) | |
| { | |
| _S22 = 0.34999999403953552f; | |
| } | |
| else | |
| { | |
| _S22 = _S21; | |
| } | |
| return (((proj_0) * ((((createRotationMatrixAxisAngle_0(_S20, 0.5f + 1.5f * (_S22 * 2.0f - 1.0f))) * (_S19)))))); | |
| } | |
| fn getSunDirection_0() -> vec3<f32> | |
| { | |
| return normalize(vec3<f32>(sin(globalParams_0.time_0), 1.0f, cos(globalParams_0.time_0))); | |
| } | |
| fn extra_cheap_atmosphere_0( raydir_0 : vec3<f32>, sundir_0 : vec3<f32>) -> vec3<f32> | |
| { | |
| var _S23 : vec3<f32> = sundir_0; | |
| _S23[i32(1)] = max(sundir_0.y, -0.07000000029802322f); | |
| var _S24 : f32 = raydir_0.y; | |
| var special_trick_0 : f32 = 1.0f / (_S24 + 0.10000000149011612f); | |
| var _S25 : vec3<f32> = vec3<f32>(1.0f); | |
| var _S26 : vec3<f32> = vec3<f32>(0.0f); | |
| const _S27 : vec3<f32> = vec3<f32>(5.5f, 13.0f, 22.39999961853027344f); | |
| var _S28 : vec3<f32> = vec3<f32>(22.39999961853027344f); | |
| return max(_S26, _S27 / _S28 * mix(_S25, max(_S26, _S25 - _S27 / _S28), vec3<f32>((1.0f / (_S23.y * 11.0f + 1.0f)))) - _S27 * vec3<f32>(0.0020000000949949f) * vec3<f32>((special_trick_0 + -6.0f * _S23.y * _S23.y))) * vec3<f32>((special_trick_0 * (0.23999999463558197f + pow(abs(dot(_S23, raydir_0)), 2.0f) * 0.23999999463558197f))) * vec3<f32>((1.0f + pow(1.0f - _S24, 3.0f))); | |
| } | |
| fn getAtmosphere_0( dir_0 : vec3<f32>) -> vec3<f32> | |
| { | |
| return extra_cheap_atmosphere_0(dir_0, getSunDirection_0()) * vec3<f32>(0.5f); | |
| } | |
| fn getSun_0( dir_1 : vec3<f32>) -> f32 | |
| { | |
| return pow(max(0.0f, dot(dir_1, getSunDirection_0())), 720.0f) * 210.0f; | |
| } | |
| fn aces_tonemap_0( color_0 : vec3<f32>) -> vec3<f32> | |
| { | |
| var v_0 : vec3<f32> = (((mat3x3<f32>(0.59719002246856689f, 0.07599999755620956f, 0.0284000001847744f, 0.35457998514175415f, 0.9083399772644043f, 0.1338299959897995f, 0.04822999984025955f, 0.01565999910235405f, 0.83776998519897461f)) * (color_0))); | |
| return pow(clamp((((mat3x3<f32>(1.60475003719329834f, -0.10208000242710114f, -0.00326999998651445f, -0.53108000755310059f, 1.10812997817993164f, -0.07276000082492828f, -0.07366999983787537f, -0.00604999996721745f, 1.0760200023651123f)) * ((v_0 * (v_0 + vec3<f32>(0.02457859925925732f)) - vec3<f32>(0.0000905370034161f)) / (v_0 * (vec3<f32>(0.98372900485992432f) * v_0 + vec3<f32>(0.43295100331306458f)) + vec3<f32>(0.23808099329471588f))))), vec3<f32>(0.0f), vec3<f32>(1.0f)), vec3<f32>(0.45454543828964233f)); | |
| } | |
| fn intersectPlane_0( origin_0 : vec3<f32>, direction_0 : vec3<f32>, point_0 : vec3<f32>, normal_0 : vec3<f32>) -> f32 | |
| { | |
| return clamp(dot(point_0 - origin_0, normal_0) / dot(direction_0, normal_0), -1.0f, 9.991999e+06f); | |
| } | |
| fn _d_exp_0( dpx_4 : ptr<function, DiffPair_float_0>, dOut_4 : f32) | |
| { | |
| var _S29 : f32 = exp((*dpx_4).primal_0) * dOut_4; | |
| (*dpx_4).primal_0 = (*dpx_4).primal_0; | |
| (*dpx_4).differential_0 = _S29; | |
| return; | |
| } | |
| fn wavedx_0( position_0 : vec2<f32>, direction_1 : vec2<f32>, frequency_0 : f32, timeshift_0 : f32) -> vec2<f32> | |
| { | |
| var x_0 : f32 = dot(direction_1, position_0) * frequency_0 + timeshift_0; | |
| var wave_0 : f32 = exp(sin(x_0) - 1.0f); | |
| return vec2<f32>(wave_0, - (wave_0 * cos(x_0))); | |
| } | |
| fn getwaves_0( position_1 : vec2<f32>) -> f32 | |
| { | |
| var _S30 : f32 = length(position_1) * 0.10000000149011612f; | |
| var p_0 : vec2<f32> = vec2<f32>(sin(0.0f), cos(0.0f)); | |
| var res_0 : vec2<f32> = wavedx_0(position_1, p_0, 1.0f, globalParams_0.time_0 * 5.0f + _S30); | |
| var _S31 : vec2<f32> = vec2<f32>(0.37999999523162842f); | |
| var _S32 : vec2<f32> = position_1 + p_0 * vec2<f32>(res_0.y) * _S31; | |
| var _S33 : f32 = mix(1.0f, 0.0f, 0.20000000298023224f); | |
| var p_1 : vec2<f32> = vec2<f32>(sin(1232.39990234375f), cos(1232.39990234375f)); | |
| var res_1 : vec2<f32> = wavedx_0(_S32, p_1, 1.1799999475479126f, globalParams_0.time_0 * 5.35000038146972656f + _S30); | |
| var _S34 : vec2<f32> = _S32 + p_1 * vec2<f32>(res_1.y) * vec2<f32>(_S33) * _S31; | |
| var _S35 : f32 = mix(_S33, 0.0f, 0.20000000298023224f); | |
| var p_2 : vec2<f32> = vec2<f32>(sin(2464.7998046875f), cos(2464.7998046875f)); | |
| var res_2 : vec2<f32> = wavedx_0(_S34, p_2, 1.39239990711212158f, globalParams_0.time_0 * 5.72450065612792969f + _S30); | |
| var _S36 : vec2<f32> = _S34 + p_2 * vec2<f32>(res_2.y) * vec2<f32>(_S35) * _S31; | |
| var _S37 : f32 = mix(_S35, 0.0f, 0.20000000298023224f); | |
| var p_3 : vec2<f32> = vec2<f32>(sin(3697.19970703125f), cos(3697.19970703125f)); | |
| var res_3 : vec2<f32> = wavedx_0(_S36, p_3, 1.64303183555603027f, globalParams_0.time_0 * 6.12521600723266602f + _S30); | |
| var _S38 : vec2<f32> = _S36 + p_3 * vec2<f32>(res_3.y) * vec2<f32>(_S37) * _S31; | |
| var _S39 : f32 = mix(_S37, 0.0f, 0.20000000298023224f); | |
| var p_4 : vec2<f32> = vec2<f32>(sin(4929.599609375f), cos(4929.599609375f)); | |
| var res_4 : vec2<f32> = wavedx_0(_S38, p_4, 1.93877744674682617f, globalParams_0.time_0 * 6.55398130416870117f + _S30); | |
| var _S40 : vec2<f32> = _S38 + p_4 * vec2<f32>(res_4.y) * vec2<f32>(_S39) * _S31; | |
| var _S41 : f32 = mix(_S39, 0.0f, 0.20000000298023224f); | |
| var p_5 : vec2<f32> = vec2<f32>(sin(6161.99951171875f), cos(6161.99951171875f)); | |
| var res_5 : vec2<f32> = wavedx_0(_S40, p_5, 2.28775739669799805f, globalParams_0.time_0 * 7.01276016235351562f + _S30); | |
| var _S42 : vec2<f32> = _S40 + p_5 * vec2<f32>(res_5.y) * vec2<f32>(_S41) * _S31; | |
| var _S43 : f32 = mix(_S41, 0.0f, 0.20000000298023224f); | |
| var p_6 : vec2<f32> = vec2<f32>(sin(7394.3994140625f), cos(7394.3994140625f)); | |
| var res_6 : vec2<f32> = wavedx_0(_S42, p_6, 2.69955348968505859f, globalParams_0.time_0 * 7.50365352630615234f + _S30); | |
| var _S44 : vec2<f32> = _S42 + p_6 * vec2<f32>(res_6.y) * vec2<f32>(_S43) * _S31; | |
| var _S45 : f32 = mix(_S43, 0.0f, 0.20000000298023224f); | |
| var p_7 : vec2<f32> = vec2<f32>(sin(8626.798828125f), cos(8626.798828125f)); | |
| var res_7 : vec2<f32> = wavedx_0(_S44, p_7, 3.18547296524047852f, globalParams_0.time_0 * 8.02890968322753906f + _S30); | |
| var _S46 : vec2<f32> = _S44 + p_7 * vec2<f32>(res_7.y) * vec2<f32>(_S45) * _S31; | |
| var _S47 : f32 = mix(_S45, 0.0f, 0.20000000298023224f); | |
| var p_8 : vec2<f32> = vec2<f32>(sin(9859.19921875f), cos(9859.19921875f)); | |
| var res_8 : vec2<f32> = wavedx_0(_S46, p_8, 3.75885796546936035f, globalParams_0.time_0 * 8.59093379974365234f + _S30); | |
| var _S48 : vec2<f32> = _S46 + p_8 * vec2<f32>(res_8.y) * vec2<f32>(_S47) * _S31; | |
| var _S49 : f32 = mix(_S47, 0.0f, 0.20000000298023224f); | |
| var p_9 : vec2<f32> = vec2<f32>(sin(11091.599609375f), cos(11091.599609375f)); | |
| var res_9 : vec2<f32> = wavedx_0(_S48, p_9, 4.43545198440551758f, globalParams_0.time_0 * 9.19229984283447266f + _S30); | |
| var _S50 : vec2<f32> = _S48 + p_9 * vec2<f32>(res_9.y) * vec2<f32>(_S49) * _S31; | |
| var _S51 : f32 = mix(_S49, 0.0f, 0.20000000298023224f); | |
| var p_10 : vec2<f32> = vec2<f32>(sin(12324.0f), cos(12324.0f)); | |
| var res_10 : vec2<f32> = wavedx_0(_S50, p_10, 5.23383331298828125f, globalParams_0.time_0 * 9.83576107025146484f + _S30); | |
| var _S52 : f32 = mix(_S51, 0.0f, 0.20000000298023224f); | |
| return (res_0.x + res_1.x * _S33 + res_2.x * _S35 + res_3.x * _S37 + res_4.x * _S39 + res_5.x * _S41 + res_6.x * _S43 + res_7.x * _S45 + res_8.x * _S47 + res_9.x * _S49 + res_10.x * _S51 + wavedx_0(_S50 + p_10 * vec2<f32>(res_10.y) * vec2<f32>(_S51) * _S31, vec2<f32>(sin(13556.400390625f), cos(13556.400390625f)), 6.17592287063598633f, globalParams_0.time_0 * 10.52426528930664062f + _S30).x * _S52) / (1.0f + _S33 + _S35 + _S37 + _S39 + _S41 + _S43 + _S45 + _S47 + _S49 + _S51 + _S52); | |
| } | |
| fn raymarchwater_0( camera_0 : vec3<f32>, start_0 : vec3<f32>, end_0 : vec3<f32>, depth_0 : f32) -> f32 | |
| { | |
| var _S53 : vec3<f32> = normalize(end_0 - start_0); | |
| var i_0 : i32 = i32(0); | |
| var pos_0 : vec3<f32> = start_0; | |
| for(;;) | |
| { | |
| if(i_0 < i32(64)) | |
| { | |
| } | |
| else | |
| { | |
| break; | |
| } | |
| var height_0 : f32 = getwaves_0(pos_0.xz) * depth_0 - depth_0; | |
| var _S54 : f32 = pos_0.y; | |
| if((height_0 + 0.00999999977648258f) > _S54) | |
| { | |
| return distance(pos_0, camera_0); | |
| } | |
| var pos_1 : vec3<f32> = pos_0 + _S53 * vec3<f32>((_S54 - height_0)); | |
| i_0 = i_0 + i32(1); | |
| pos_0 = pos_1; | |
| } | |
| return distance(start_0, camera_0); | |
| } | |
| struct s_bwd_prop_getwaves_Intermediates_0 | |
| { | |
| _S55 : vec2<f32>, | |
| _S56 : vec2<f32>, | |
| _S57 : vec2<f32>, | |
| _S58 : vec2<f32>, | |
| _S59 : vec2<f32>, | |
| _S60 : vec2<f32>, | |
| _S61 : vec2<f32>, | |
| _S62 : vec2<f32>, | |
| _S63 : vec2<f32>, | |
| _S64 : vec2<f32>, | |
| _S65 : vec2<f32>, | |
| _S66 : vec2<f32>, | |
| _S67 : vec2<f32>, | |
| _S68 : vec2<f32>, | |
| _S69 : vec2<f32>, | |
| _S70 : vec2<f32>, | |
| _S71 : vec2<f32>, | |
| _S72 : vec2<f32>, | |
| _S73 : vec2<f32>, | |
| _S74 : vec2<f32>, | |
| _S75 : vec2<f32>, | |
| _S76 : vec2<f32>, | |
| _S77 : vec2<f32>, | |
| _S78 : vec2<f32>, | |
| _S79 : vec2<f32>, | |
| _S80 : vec2<f32>, | |
| _S81 : vec2<f32>, | |
| _S82 : vec2<f32>, | |
| _S83 : vec2<f32>, | |
| _S84 : vec2<f32>, | |
| _S85 : vec2<f32>, | |
| _S86 : vec2<f32>, | |
| _S87 : vec2<f32>, | |
| _S88 : vec2<f32>, | |
| _S89 : vec2<f32>, | |
| _S90 : vec2<f32>, | |
| }; | |
| fn s_primal_ctx_sin_0( _S91 : f32) -> f32 | |
| { | |
| return sin(_S91); | |
| } | |
| fn s_primal_ctx_cos_0( _S92 : f32) -> f32 | |
| { | |
| return cos(_S92); | |
| } | |
| fn s_primal_ctx_dot_0( _S93 : vec2<f32>, _S94 : vec2<f32>) -> f32 | |
| { | |
| return dot(_S93, _S94); | |
| } | |
| fn s_primal_ctx_exp_0( _S95 : f32) -> f32 | |
| { | |
| return exp(_S95); | |
| } | |
| fn s_primal_ctx_wavedx_0( dpposition_0 : vec2<f32>, dpdirection_0 : vec2<f32>, dpfrequency_0 : f32, dptimeshift_0 : f32) -> vec2<f32> | |
| { | |
| var x_1 : f32 = s_primal_ctx_dot_0(dpdirection_0, dpposition_0) * dpfrequency_0 + dptimeshift_0; | |
| var _S96 : f32 = s_primal_ctx_exp_0(s_primal_ctx_sin_0(x_1) - 1.0f); | |
| return vec2<f32>(_S96, - (_S96 * s_primal_ctx_cos_0(x_1))); | |
| } | |
| fn s_primal_ctx_lerp_0( _S97 : f32, _S98 : f32, _S99 : f32) -> f32 | |
| { | |
| return mix(_S97, _S98, _S99); | |
| } | |
| fn s_primal_ctx_getwaves_0( dpposition_1 : vec2<f32>, _s_diff_ctx_0 : ptr<function, s_bwd_prop_getwaves_Intermediates_0>) -> f32 | |
| { | |
| var _S100 : vec2<f32> = vec2<f32>(0.0f); | |
| (*_s_diff_ctx_0)._S55 = _S100; | |
| (*_s_diff_ctx_0)._S56 = _S100; | |
| (*_s_diff_ctx_0)._S57 = _S100; | |
| (*_s_diff_ctx_0)._S58 = _S100; | |
| (*_s_diff_ctx_0)._S59 = _S100; | |
| (*_s_diff_ctx_0)._S60 = _S100; | |
| (*_s_diff_ctx_0)._S61 = _S100; | |
| (*_s_diff_ctx_0)._S62 = _S100; | |
| (*_s_diff_ctx_0)._S63 = _S100; | |
| (*_s_diff_ctx_0)._S64 = _S100; | |
| (*_s_diff_ctx_0)._S65 = _S100; | |
| (*_s_diff_ctx_0)._S66 = _S100; | |
| (*_s_diff_ctx_0)._S67 = _S100; | |
| (*_s_diff_ctx_0)._S68 = _S100; | |
| (*_s_diff_ctx_0)._S69 = _S100; | |
| (*_s_diff_ctx_0)._S70 = _S100; | |
| (*_s_diff_ctx_0)._S71 = _S100; | |
| (*_s_diff_ctx_0)._S72 = _S100; | |
| (*_s_diff_ctx_0)._S73 = _S100; | |
| (*_s_diff_ctx_0)._S74 = _S100; | |
| (*_s_diff_ctx_0)._S75 = _S100; | |
| (*_s_diff_ctx_0)._S76 = _S100; | |
| (*_s_diff_ctx_0)._S77 = _S100; | |
| (*_s_diff_ctx_0)._S78 = _S100; | |
| (*_s_diff_ctx_0)._S79 = _S100; | |
| (*_s_diff_ctx_0)._S80 = _S100; | |
| (*_s_diff_ctx_0)._S81 = _S100; | |
| (*_s_diff_ctx_0)._S82 = _S100; | |
| (*_s_diff_ctx_0)._S83 = _S100; | |
| (*_s_diff_ctx_0)._S84 = _S100; | |
| (*_s_diff_ctx_0)._S85 = _S100; | |
| (*_s_diff_ctx_0)._S86 = _S100; | |
| (*_s_diff_ctx_0)._S87 = _S100; | |
| (*_s_diff_ctx_0)._S88 = _S100; | |
| (*_s_diff_ctx_0)._S89 = _S100; | |
| (*_s_diff_ctx_0)._S90 = _S100; | |
| (*_s_diff_ctx_0)._S55 = _S100; | |
| (*_s_diff_ctx_0)._S56 = _S100; | |
| (*_s_diff_ctx_0)._S57 = _S100; | |
| (*_s_diff_ctx_0)._S58 = _S100; | |
| (*_s_diff_ctx_0)._S59 = _S100; | |
| (*_s_diff_ctx_0)._S60 = _S100; | |
| (*_s_diff_ctx_0)._S61 = _S100; | |
| (*_s_diff_ctx_0)._S62 = _S100; | |
| (*_s_diff_ctx_0)._S63 = _S100; | |
| (*_s_diff_ctx_0)._S64 = _S100; | |
| (*_s_diff_ctx_0)._S65 = _S100; | |
| (*_s_diff_ctx_0)._S66 = _S100; | |
| (*_s_diff_ctx_0)._S67 = _S100; | |
| (*_s_diff_ctx_0)._S68 = _S100; | |
| (*_s_diff_ctx_0)._S69 = _S100; | |
| (*_s_diff_ctx_0)._S70 = _S100; | |
| (*_s_diff_ctx_0)._S71 = _S100; | |
| (*_s_diff_ctx_0)._S72 = _S100; | |
| (*_s_diff_ctx_0)._S73 = _S100; | |
| (*_s_diff_ctx_0)._S74 = _S100; | |
| (*_s_diff_ctx_0)._S75 = _S100; | |
| (*_s_diff_ctx_0)._S76 = _S100; | |
| (*_s_diff_ctx_0)._S77 = _S100; | |
| (*_s_diff_ctx_0)._S78 = _S100; | |
| (*_s_diff_ctx_0)._S79 = _S100; | |
| (*_s_diff_ctx_0)._S80 = _S100; | |
| (*_s_diff_ctx_0)._S81 = _S100; | |
| (*_s_diff_ctx_0)._S82 = _S100; | |
| (*_s_diff_ctx_0)._S83 = _S100; | |
| (*_s_diff_ctx_0)._S84 = _S100; | |
| (*_s_diff_ctx_0)._S85 = _S100; | |
| (*_s_diff_ctx_0)._S86 = _S100; | |
| (*_s_diff_ctx_0)._S87 = _S100; | |
| (*_s_diff_ctx_0)._S88 = _S100; | |
| (*_s_diff_ctx_0)._S89 = _S100; | |
| (*_s_diff_ctx_0)._S90 = _S100; | |
| var _S101 : f32 = length(dpposition_1) * 0.10000000149011612f; | |
| var p_11 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(0.0f), s_primal_ctx_cos_0(0.0f)); | |
| var _S102 : f32 = globalParams_0.time_0; | |
| var _S103 : vec2<f32> = s_primal_ctx_wavedx_0(dpposition_1, p_11, 1.0f, globalParams_0.time_0 * 5.0f + _S101); | |
| (*_s_diff_ctx_0)._S55 = _S103; | |
| var _S104 : vec2<f32> = vec2<f32>(0.37999999523162842f); | |
| var _S105 : vec2<f32> = dpposition_1 + p_11 * vec2<f32>(_S103.y) * _S104; | |
| var _S106 : f32 = _S103.x; | |
| var _S107 : f32 = s_primal_ctx_lerp_0(1.0f, 0.0f, 0.20000000298023224f); | |
| var p_12 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(1232.39990234375f), s_primal_ctx_cos_0(1232.39990234375f)); | |
| var _S108 : vec2<f32> = s_primal_ctx_wavedx_0(_S105, p_12, 1.1799999475479126f, _S102 * 5.35000038146972656f + _S101); | |
| (*_s_diff_ctx_0)._S56 = _S108; | |
| var _S109 : vec2<f32> = _S105 + p_12 * vec2<f32>(_S108.y) * vec2<f32>(_S107) * _S104; | |
| var sumOfValues_0 : f32 = _S106 + _S108.x * _S107; | |
| var sumOfWeights_0 : f32 = 1.0f + _S107; | |
| var _S110 : f32 = s_primal_ctx_lerp_0(_S107, 0.0f, 0.20000000298023224f); | |
| var p_13 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(2464.7998046875f), s_primal_ctx_cos_0(2464.7998046875f)); | |
| var _S111 : vec2<f32> = s_primal_ctx_wavedx_0(_S109, p_13, 1.39239990711212158f, _S102 * 5.72450065612792969f + _S101); | |
| (*_s_diff_ctx_0)._S57 = _S111; | |
| var _S112 : vec2<f32> = _S109 + p_13 * vec2<f32>(_S111.y) * vec2<f32>(_S110) * _S104; | |
| var sumOfValues_1 : f32 = sumOfValues_0 + _S111.x * _S110; | |
| var sumOfWeights_1 : f32 = sumOfWeights_0 + _S110; | |
| var _S113 : f32 = s_primal_ctx_lerp_0(_S110, 0.0f, 0.20000000298023224f); | |
| var p_14 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(3697.19970703125f), s_primal_ctx_cos_0(3697.19970703125f)); | |
| var _S114 : vec2<f32> = s_primal_ctx_wavedx_0(_S112, p_14, 1.64303183555603027f, _S102 * 6.12521600723266602f + _S101); | |
| (*_s_diff_ctx_0)._S58 = _S114; | |
| var _S115 : vec2<f32> = _S112 + p_14 * vec2<f32>(_S114.y) * vec2<f32>(_S113) * _S104; | |
| var sumOfValues_2 : f32 = sumOfValues_1 + _S114.x * _S113; | |
| var sumOfWeights_2 : f32 = sumOfWeights_1 + _S113; | |
| var _S116 : f32 = s_primal_ctx_lerp_0(_S113, 0.0f, 0.20000000298023224f); | |
| var p_15 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(4929.599609375f), s_primal_ctx_cos_0(4929.599609375f)); | |
| var _S117 : vec2<f32> = s_primal_ctx_wavedx_0(_S115, p_15, 1.93877744674682617f, _S102 * 6.55398130416870117f + _S101); | |
| (*_s_diff_ctx_0)._S59 = _S117; | |
| var _S118 : vec2<f32> = _S115 + p_15 * vec2<f32>(_S117.y) * vec2<f32>(_S116) * _S104; | |
| var sumOfValues_3 : f32 = sumOfValues_2 + _S117.x * _S116; | |
| var sumOfWeights_3 : f32 = sumOfWeights_2 + _S116; | |
| var _S119 : f32 = s_primal_ctx_lerp_0(_S116, 0.0f, 0.20000000298023224f); | |
| var p_16 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(6161.99951171875f), s_primal_ctx_cos_0(6161.99951171875f)); | |
| var _S120 : vec2<f32> = s_primal_ctx_wavedx_0(_S118, p_16, 2.28775739669799805f, _S102 * 7.01276016235351562f + _S101); | |
| (*_s_diff_ctx_0)._S60 = _S120; | |
| var _S121 : vec2<f32> = _S118 + p_16 * vec2<f32>(_S120.y) * vec2<f32>(_S119) * _S104; | |
| var sumOfValues_4 : f32 = sumOfValues_3 + _S120.x * _S119; | |
| var sumOfWeights_4 : f32 = sumOfWeights_3 + _S119; | |
| var _S122 : f32 = s_primal_ctx_lerp_0(_S119, 0.0f, 0.20000000298023224f); | |
| var p_17 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(7394.3994140625f), s_primal_ctx_cos_0(7394.3994140625f)); | |
| var _S123 : vec2<f32> = s_primal_ctx_wavedx_0(_S121, p_17, 2.69955348968505859f, _S102 * 7.50365352630615234f + _S101); | |
| (*_s_diff_ctx_0)._S61 = _S123; | |
| var _S124 : vec2<f32> = _S121 + p_17 * vec2<f32>(_S123.y) * vec2<f32>(_S122) * _S104; | |
| var sumOfValues_5 : f32 = sumOfValues_4 + _S123.x * _S122; | |
| var sumOfWeights_5 : f32 = sumOfWeights_4 + _S122; | |
| var _S125 : f32 = s_primal_ctx_lerp_0(_S122, 0.0f, 0.20000000298023224f); | |
| var p_18 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(8626.798828125f), s_primal_ctx_cos_0(8626.798828125f)); | |
| var _S126 : vec2<f32> = s_primal_ctx_wavedx_0(_S124, p_18, 3.18547296524047852f, _S102 * 8.02890968322753906f + _S101); | |
| (*_s_diff_ctx_0)._S62 = _S126; | |
| var _S127 : vec2<f32> = _S124 + p_18 * vec2<f32>(_S126.y) * vec2<f32>(_S125) * _S104; | |
| var sumOfValues_6 : f32 = sumOfValues_5 + _S126.x * _S125; | |
| var sumOfWeights_6 : f32 = sumOfWeights_5 + _S125; | |
| var _S128 : f32 = s_primal_ctx_lerp_0(_S125, 0.0f, 0.20000000298023224f); | |
| var p_19 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(9859.19921875f), s_primal_ctx_cos_0(9859.19921875f)); | |
| var _S129 : vec2<f32> = s_primal_ctx_wavedx_0(_S127, p_19, 3.75885796546936035f, _S102 * 8.59093379974365234f + _S101); | |
| (*_s_diff_ctx_0)._S63 = _S129; | |
| var _S130 : vec2<f32> = _S127 + p_19 * vec2<f32>(_S129.y) * vec2<f32>(_S128) * _S104; | |
| var sumOfValues_7 : f32 = sumOfValues_6 + _S129.x * _S128; | |
| var sumOfWeights_7 : f32 = sumOfWeights_6 + _S128; | |
| var _S131 : f32 = s_primal_ctx_lerp_0(_S128, 0.0f, 0.20000000298023224f); | |
| var p_20 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(11091.599609375f), s_primal_ctx_cos_0(11091.599609375f)); | |
| var _S132 : vec2<f32> = s_primal_ctx_wavedx_0(_S130, p_20, 4.43545198440551758f, _S102 * 9.19229984283447266f + _S101); | |
| (*_s_diff_ctx_0)._S64 = _S132; | |
| var _S133 : vec2<f32> = _S130 + p_20 * vec2<f32>(_S132.y) * vec2<f32>(_S131) * _S104; | |
| var sumOfValues_8 : f32 = sumOfValues_7 + _S132.x * _S131; | |
| var sumOfWeights_8 : f32 = sumOfWeights_7 + _S131; | |
| var _S134 : f32 = s_primal_ctx_lerp_0(_S131, 0.0f, 0.20000000298023224f); | |
| var p_21 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(12324.0f), s_primal_ctx_cos_0(12324.0f)); | |
| var _S135 : vec2<f32> = s_primal_ctx_wavedx_0(_S133, p_21, 5.23383331298828125f, _S102 * 9.83576107025146484f + _S101); | |
| (*_s_diff_ctx_0)._S65 = _S135; | |
| var _S136 : vec2<f32> = _S133 + p_21 * vec2<f32>(_S135.y) * vec2<f32>(_S134) * _S104; | |
| var sumOfValues_9 : f32 = sumOfValues_8 + _S135.x * _S134; | |
| var sumOfWeights_9 : f32 = sumOfWeights_8 + _S134; | |
| var _S137 : f32 = s_primal_ctx_lerp_0(_S134, 0.0f, 0.20000000298023224f); | |
| var p_22 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(13556.400390625f), s_primal_ctx_cos_0(13556.400390625f)); | |
| var _S138 : vec2<f32> = s_primal_ctx_wavedx_0(_S136, p_22, 6.17592287063598633f, _S102 * 10.52426528930664062f + _S101); | |
| (*_s_diff_ctx_0)._S66 = _S138; | |
| var _S139 : vec2<f32> = _S136 + p_22 * vec2<f32>(_S138.y) * vec2<f32>(_S137) * _S104; | |
| var sumOfValues_10 : f32 = sumOfValues_9 + _S138.x * _S137; | |
| var sumOfWeights_10 : f32 = sumOfWeights_9 + _S137; | |
| var _S140 : f32 = s_primal_ctx_lerp_0(_S137, 0.0f, 0.20000000298023224f); | |
| var p_23 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(14788.80078125f), s_primal_ctx_cos_0(14788.80078125f)); | |
| var _S141 : vec2<f32> = s_primal_ctx_wavedx_0(_S139, p_23, 7.28758859634399414f, _S102 * 11.26096439361572266f + _S101); | |
| (*_s_diff_ctx_0)._S67 = _S141; | |
| var _S142 : vec2<f32> = _S139 + p_23 * vec2<f32>(_S141.y) * vec2<f32>(_S140) * _S104; | |
| var sumOfValues_11 : f32 = sumOfValues_10 + _S141.x * _S140; | |
| var sumOfWeights_11 : f32 = sumOfWeights_10 + _S140; | |
| var _S143 : f32 = s_primal_ctx_lerp_0(_S140, 0.0f, 0.20000000298023224f); | |
| var p_24 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(16021.201171875f), s_primal_ctx_cos_0(16021.201171875f)); | |
| var _S144 : vec2<f32> = s_primal_ctx_wavedx_0(_S142, p_24, 8.59935379028320312f, _S102 * 12.04923248291015625f + _S101); | |
| (*_s_diff_ctx_0)._S68 = _S144; | |
| var _S145 : vec2<f32> = _S142 + p_24 * vec2<f32>(_S144.y) * vec2<f32>(_S143) * _S104; | |
| var sumOfValues_12 : f32 = sumOfValues_11 + _S144.x * _S143; | |
| var sumOfWeights_12 : f32 = sumOfWeights_11 + _S143; | |
| var _S146 : f32 = s_primal_ctx_lerp_0(_S143, 0.0f, 0.20000000298023224f); | |
| var p_25 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(17253.6015625f), s_primal_ctx_cos_0(17253.6015625f)); | |
| var _S147 : vec2<f32> = s_primal_ctx_wavedx_0(_S145, p_25, 10.14723682403564453f, _S102 * 12.89267921447753906f + _S101); | |
| (*_s_diff_ctx_0)._S69 = _S147; | |
| var _S148 : vec2<f32> = _S145 + p_25 * vec2<f32>(_S147.y) * vec2<f32>(_S146) * _S104; | |
| var sumOfValues_13 : f32 = sumOfValues_12 + _S147.x * _S146; | |
| var sumOfWeights_13 : f32 = sumOfWeights_12 + _S146; | |
| var _S149 : f32 = s_primal_ctx_lerp_0(_S146, 0.0f, 0.20000000298023224f); | |
| var p_26 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(18486.001953125f), s_primal_ctx_cos_0(18486.001953125f)); | |
| var _S150 : vec2<f32> = s_primal_ctx_wavedx_0(_S148, p_26, 11.97373867034912109f, _S102 * 13.79516696929931641f + _S101); | |
| (*_s_diff_ctx_0)._S70 = _S150; | |
| var _S151 : vec2<f32> = _S148 + p_26 * vec2<f32>(_S150.y) * vec2<f32>(_S149) * _S104; | |
| var sumOfValues_14 : f32 = sumOfValues_13 + _S150.x * _S149; | |
| var sumOfWeights_14 : f32 = sumOfWeights_13 + _S149; | |
| var _S152 : f32 = s_primal_ctx_lerp_0(_S149, 0.0f, 0.20000000298023224f); | |
| var p_27 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(19718.40234375f), s_primal_ctx_cos_0(19718.40234375f)); | |
| var _S153 : vec2<f32> = s_primal_ctx_wavedx_0(_S151, p_27, 14.12901115417480469f, _S102 * 14.76082897186279297f + _S101); | |
| (*_s_diff_ctx_0)._S71 = _S153; | |
| var _S154 : vec2<f32> = _S151 + p_27 * vec2<f32>(_S153.y) * vec2<f32>(_S152) * _S104; | |
| var sumOfValues_15 : f32 = sumOfValues_14 + _S153.x * _S152; | |
| var sumOfWeights_15 : f32 = sumOfWeights_14 + _S152; | |
| var _S155 : f32 = s_primal_ctx_lerp_0(_S152, 0.0f, 0.20000000298023224f); | |
| var p_28 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(20950.802734375f), s_primal_ctx_cos_0(20950.802734375f)); | |
| var _S156 : vec2<f32> = s_primal_ctx_wavedx_0(_S154, p_28, 16.67223167419433594f, _S102 * 15.79408740997314453f + _S101); | |
| (*_s_diff_ctx_0)._S72 = _S156; | |
| var _S157 : vec2<f32> = _S154 + p_28 * vec2<f32>(_S156.y) * vec2<f32>(_S155) * _S104; | |
| var sumOfValues_16 : f32 = sumOfValues_15 + _S156.x * _S155; | |
| var sumOfWeights_16 : f32 = sumOfWeights_15 + _S155; | |
| var _S158 : f32 = s_primal_ctx_lerp_0(_S155, 0.0f, 0.20000000298023224f); | |
| var p_29 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(22183.203125f), s_primal_ctx_cos_0(22183.203125f)); | |
| var _S159 : vec2<f32> = s_primal_ctx_wavedx_0(_S157, p_29, 19.6732330322265625f, _S102 * 16.8996734619140625f + _S101); | |
| (*_s_diff_ctx_0)._S73 = _S159; | |
| var _S160 : vec2<f32> = _S157 + p_29 * vec2<f32>(_S159.y) * vec2<f32>(_S158) * _S104; | |
| var sumOfValues_17 : f32 = sumOfValues_16 + _S159.x * _S158; | |
| var sumOfWeights_17 : f32 = sumOfWeights_16 + _S158; | |
| var _S161 : f32 = s_primal_ctx_lerp_0(_S158, 0.0f, 0.20000000298023224f); | |
| var p_30 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(23415.603515625f), s_primal_ctx_cos_0(23415.603515625f)); | |
| var _S162 : vec2<f32> = s_primal_ctx_wavedx_0(_S160, p_30, 23.21441459655761719f, _S102 * 18.08265113830566406f + _S101); | |
| (*_s_diff_ctx_0)._S74 = _S162; | |
| var _S163 : vec2<f32> = _S160 + p_30 * vec2<f32>(_S162.y) * vec2<f32>(_S161) * _S104; | |
| var sumOfValues_18 : f32 = sumOfValues_17 + _S162.x * _S161; | |
| var sumOfWeights_18 : f32 = sumOfWeights_17 + _S161; | |
| var _S164 : f32 = s_primal_ctx_lerp_0(_S161, 0.0f, 0.20000000298023224f); | |
| var p_31 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(24648.00390625f), s_primal_ctx_cos_0(24648.00390625f)); | |
| var _S165 : vec2<f32> = s_primal_ctx_wavedx_0(_S163, p_31, 27.39300727844238281f, _S102 * 19.34843826293945312f + _S101); | |
| (*_s_diff_ctx_0)._S75 = _S165; | |
| var _S166 : vec2<f32> = _S163 + p_31 * vec2<f32>(_S165.y) * vec2<f32>(_S164) * _S104; | |
| var sumOfValues_19 : f32 = sumOfValues_18 + _S165.x * _S164; | |
| var sumOfWeights_19 : f32 = sumOfWeights_18 + _S164; | |
| var _S167 : f32 = s_primal_ctx_lerp_0(_S164, 0.0f, 0.20000000298023224f); | |
| var p_32 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(25880.404296875f), s_primal_ctx_cos_0(25880.404296875f)); | |
| var _S168 : vec2<f32> = s_primal_ctx_wavedx_0(_S166, p_32, 32.3237457275390625f, _S102 * 20.70282936096191406f + _S101); | |
| (*_s_diff_ctx_0)._S76 = _S168; | |
| var _S169 : vec2<f32> = _S166 + p_32 * vec2<f32>(_S168.y) * vec2<f32>(_S167) * _S104; | |
| var sumOfValues_20 : f32 = sumOfValues_19 + _S168.x * _S167; | |
| var sumOfWeights_20 : f32 = sumOfWeights_19 + _S167; | |
| var _S170 : f32 = s_primal_ctx_lerp_0(_S167, 0.0f, 0.20000000298023224f); | |
| var p_33 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(27112.8046875f), s_primal_ctx_cos_0(27112.8046875f)); | |
| var _S171 : vec2<f32> = s_primal_ctx_wavedx_0(_S169, p_33, 38.14201736450195312f, _S102 * 22.15202903747558594f + _S101); | |
| (*_s_diff_ctx_0)._S77 = _S171; | |
| var _S172 : vec2<f32> = _S169 + p_33 * vec2<f32>(_S171.y) * vec2<f32>(_S170) * _S104; | |
| var sumOfValues_21 : f32 = sumOfValues_20 + _S171.x * _S170; | |
| var sumOfWeights_21 : f32 = sumOfWeights_20 + _S170; | |
| var _S173 : f32 = s_primal_ctx_lerp_0(_S170, 0.0f, 0.20000000298023224f); | |
| var p_34 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(28345.205078125f), s_primal_ctx_cos_0(28345.205078125f)); | |
| var _S174 : vec2<f32> = s_primal_ctx_wavedx_0(_S172, p_34, 45.00757980346679688f, _S102 * 23.70267295837402344f + _S101); | |
| (*_s_diff_ctx_0)._S78 = _S174; | |
| var _S175 : vec2<f32> = _S172 + p_34 * vec2<f32>(_S174.y) * vec2<f32>(_S173) * _S104; | |
| var sumOfValues_22 : f32 = sumOfValues_21 + _S174.x * _S173; | |
| var sumOfWeights_22 : f32 = sumOfWeights_21 + _S173; | |
| var _S176 : f32 = s_primal_ctx_lerp_0(_S173, 0.0f, 0.20000000298023224f); | |
| var p_35 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(29577.60546875f), s_primal_ctx_cos_0(29577.60546875f)); | |
| var _S177 : vec2<f32> = s_primal_ctx_wavedx_0(_S175, p_35, 53.10894012451171875f, _S102 * 25.3618621826171875f + _S101); | |
| (*_s_diff_ctx_0)._S79 = _S177; | |
| var _S178 : vec2<f32> = _S175 + p_35 * vec2<f32>(_S177.y) * vec2<f32>(_S176) * _S104; | |
| var sumOfValues_23 : f32 = sumOfValues_22 + _S177.x * _S176; | |
| var sumOfWeights_23 : f32 = sumOfWeights_22 + _S176; | |
| var _S179 : f32 = s_primal_ctx_lerp_0(_S176, 0.0f, 0.20000000298023224f); | |
| var p_36 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(30810.005859375f), s_primal_ctx_cos_0(30810.005859375f)); | |
| var _S180 : vec2<f32> = s_primal_ctx_wavedx_0(_S178, p_36, 62.66854476928710938f, _S102 * 27.13719367980957031f + _S101); | |
| (*_s_diff_ctx_0)._S80 = _S180; | |
| var _S181 : vec2<f32> = _S178 + p_36 * vec2<f32>(_S180.y) * vec2<f32>(_S179) * _S104; | |
| var sumOfValues_24 : f32 = sumOfValues_23 + _S180.x * _S179; | |
| var sumOfWeights_24 : f32 = sumOfWeights_23 + _S179; | |
| var _S182 : f32 = s_primal_ctx_lerp_0(_S179, 0.0f, 0.20000000298023224f); | |
| var p_37 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(32042.40625f), s_primal_ctx_cos_0(32042.40625f)); | |
| var _S183 : vec2<f32> = s_primal_ctx_wavedx_0(_S181, p_37, 73.948883056640625f, _S102 * 29.03679847717285156f + _S101); | |
| (*_s_diff_ctx_0)._S81 = _S183; | |
| var _S184 : vec2<f32> = _S181 + p_37 * vec2<f32>(_S183.y) * vec2<f32>(_S182) * _S104; | |
| var sumOfValues_25 : f32 = sumOfValues_24 + _S183.x * _S182; | |
| var sumOfWeights_25 : f32 = sumOfWeights_24 + _S182; | |
| var _S185 : f32 = s_primal_ctx_lerp_0(_S182, 0.0f, 0.20000000298023224f); | |
| var p_38 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(33274.8046875f), s_primal_ctx_cos_0(33274.8046875f)); | |
| var _S186 : vec2<f32> = s_primal_ctx_wavedx_0(_S184, p_38, 87.25968170166015625f, _S102 * 31.06937599182128906f + _S101); | |
| (*_s_diff_ctx_0)._S82 = _S186; | |
| var _S187 : vec2<f32> = _S184 + p_38 * vec2<f32>(_S186.y) * vec2<f32>(_S185) * _S104; | |
| var sumOfValues_26 : f32 = sumOfValues_25 + _S186.x * _S185; | |
| var sumOfWeights_26 : f32 = sumOfWeights_25 + _S185; | |
| var _S188 : f32 = s_primal_ctx_lerp_0(_S185, 0.0f, 0.20000000298023224f); | |
| var p_39 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(34507.203125f), s_primal_ctx_cos_0(34507.203125f)); | |
| var _S189 : vec2<f32> = s_primal_ctx_wavedx_0(_S187, p_39, 102.96642303466796875f, _S102 * 33.244232177734375f + _S101); | |
| (*_s_diff_ctx_0)._S83 = _S189; | |
| var _S190 : vec2<f32> = _S187 + p_39 * vec2<f32>(_S189.y) * vec2<f32>(_S188) * _S104; | |
| var sumOfValues_27 : f32 = sumOfValues_26 + _S189.x * _S188; | |
| var sumOfWeights_27 : f32 = sumOfWeights_26 + _S188; | |
| var _S191 : f32 = s_primal_ctx_lerp_0(_S188, 0.0f, 0.20000000298023224f); | |
| var p_40 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(35739.6015625f), s_primal_ctx_cos_0(35739.6015625f)); | |
| var _S192 : vec2<f32> = s_primal_ctx_wavedx_0(_S190, p_40, 121.50037384033203125f, _S102 * 35.57133102416992188f + _S101); | |
| (*_s_diff_ctx_0)._S84 = _S192; | |
| var _S193 : vec2<f32> = _S190 + p_40 * vec2<f32>(_S192.y) * vec2<f32>(_S191) * _S104; | |
| var sumOfValues_28 : f32 = sumOfValues_27 + _S192.x * _S191; | |
| var sumOfWeights_28 : f32 = sumOfWeights_27 + _S191; | |
| var _S194 : f32 = s_primal_ctx_lerp_0(_S191, 0.0f, 0.20000000298023224f); | |
| var p_41 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(36972.0f), s_primal_ctx_cos_0(36972.0f)); | |
| var _S195 : vec2<f32> = s_primal_ctx_wavedx_0(_S193, p_41, 143.3704376220703125f, _S102 * 38.0613250732421875f + _S101); | |
| (*_s_diff_ctx_0)._S85 = _S195; | |
| var _S196 : vec2<f32> = _S193 + p_41 * vec2<f32>(_S195.y) * vec2<f32>(_S194) * _S104; | |
| var sumOfValues_29 : f32 = sumOfValues_28 + _S195.x * _S194; | |
| var sumOfWeights_29 : f32 = sumOfWeights_28 + _S194; | |
| var _S197 : f32 = s_primal_ctx_lerp_0(_S194, 0.0f, 0.20000000298023224f); | |
| var p_42 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(38204.3984375f), s_primal_ctx_cos_0(38204.3984375f)); | |
| var _S198 : vec2<f32> = s_primal_ctx_wavedx_0(_S196, p_42, 169.1771087646484375f, _S102 * 40.72562026977539062f + _S101); | |
| (*_s_diff_ctx_0)._S86 = _S198; | |
| var _S199 : vec2<f32> = _S196 + p_42 * vec2<f32>(_S198.y) * vec2<f32>(_S197) * _S104; | |
| var sumOfValues_30 : f32 = sumOfValues_29 + _S198.x * _S197; | |
| var sumOfWeights_30 : f32 = sumOfWeights_29 + _S197; | |
| var _S200 : f32 = s_primal_ctx_lerp_0(_S197, 0.0f, 0.20000000298023224f); | |
| var p_43 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(39436.796875f), s_primal_ctx_cos_0(39436.796875f)); | |
| var _S201 : vec2<f32> = s_primal_ctx_wavedx_0(_S199, p_43, 199.6289825439453125f, _S102 * 43.576416015625f + _S101); | |
| (*_s_diff_ctx_0)._S87 = _S201; | |
| var _S202 : vec2<f32> = _S199 + p_43 * vec2<f32>(_S201.y) * vec2<f32>(_S200) * _S104; | |
| var sumOfValues_31 : f32 = sumOfValues_30 + _S201.x * _S200; | |
| var sumOfWeights_31 : f32 = sumOfWeights_30 + _S200; | |
| var _S203 : f32 = s_primal_ctx_lerp_0(_S200, 0.0f, 0.20000000298023224f); | |
| var p_44 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(40669.1953125f), s_primal_ctx_cos_0(40669.1953125f)); | |
| var _S204 : vec2<f32> = s_primal_ctx_wavedx_0(_S202, p_44, 235.56219482421875f, _S102 * 46.62676620483398438f + _S101); | |
| (*_s_diff_ctx_0)._S88 = _S204; | |
| var _S205 : vec2<f32> = _S202 + p_44 * vec2<f32>(_S204.y) * vec2<f32>(_S203) * _S104; | |
| var sumOfValues_32 : f32 = sumOfValues_31 + _S204.x * _S203; | |
| var sumOfWeights_32 : f32 = sumOfWeights_31 + _S203; | |
| var _S206 : f32 = s_primal_ctx_lerp_0(_S203, 0.0f, 0.20000000298023224f); | |
| var p_45 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(41901.59375f), s_primal_ctx_cos_0(41901.59375f)); | |
| var _S207 : vec2<f32> = s_primal_ctx_wavedx_0(_S205, p_45, 277.96337890625f, _S102 * 49.89064407348632812f + _S101); | |
| (*_s_diff_ctx_0)._S89 = _S207; | |
| var _S208 : vec2<f32> = _S205 + p_45 * vec2<f32>(_S207.y) * vec2<f32>(_S206) * _S104; | |
| var sumOfValues_33 : f32 = sumOfValues_32 + _S207.x * _S206; | |
| var sumOfWeights_33 : f32 = sumOfWeights_32 + _S206; | |
| var _S209 : f32 = s_primal_ctx_lerp_0(_S206, 0.0f, 0.20000000298023224f); | |
| var p_46 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(43133.9921875f), s_primal_ctx_cos_0(43133.9921875f)); | |
| var _S210 : vec2<f32> = s_primal_ctx_wavedx_0(_S208, p_46, 327.99676513671875f, _S102 * 53.38299179077148438f + _S101); | |
| (*_s_diff_ctx_0)._S90 = _S210; | |
| var _S211 : f32 = s_primal_ctx_lerp_0(_S209, 0.0f, 0.20000000298023224f); | |
| return (sumOfValues_33 + _S210.x * _S209 + s_primal_ctx_wavedx_0(_S208 + p_46 * vec2<f32>(_S210.y) * vec2<f32>(_S209) * _S104, vec2<f32>(s_primal_ctx_sin_0(44366.390625f), s_primal_ctx_cos_0(44366.390625f)), 387.036163330078125f, _S102 * 57.11980438232421875f + _S101).x * _S211) / (sumOfWeights_33 + _S209 + _S211); | |
| } | |
| fn s_bwd_prop_cos_0( _S212 : ptr<function, DiffPair_float_0>, _S213 : f32) | |
| { | |
| _d_cos_0(&((*_S212)), _S213); | |
| return; | |
| } | |
| fn s_bwd_prop_exp_0( _S214 : ptr<function, DiffPair_float_0>, _S215 : f32) | |
| { | |
| _d_exp_0(&((*_S214)), _S215); | |
| return; | |
| } | |
| fn s_bwd_prop_sin_0( _S216 : ptr<function, DiffPair_float_0>, _S217 : f32) | |
| { | |
| _d_sin_0(&((*_S216)), _S217); | |
| return; | |
| } | |
| fn s_bwd_prop_dot_0( _S218 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _S219 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _S220 : f32) | |
| { | |
| _d_dot_0(&((*_S218)), &((*_S219)), _S220); | |
| return; | |
| } | |
| fn s_bwd_prop_wavedx_0( dpposition_2 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, dpdirection_1 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, dpfrequency_1 : ptr<function, DiffPair_float_0>, dptimeshift_1 : ptr<function, DiffPair_float_0>, _s_dOut_0 : vec2<f32>) | |
| { | |
| var _S221 : f32 = s_primal_ctx_dot_0((*dpdirection_1).primal_0, (*dpposition_2).primal_0); | |
| var x_2 : f32 = _S221 * (*dpfrequency_1).primal_0 + (*dptimeshift_1).primal_0; | |
| var _S222 : f32 = s_primal_ctx_sin_0(x_2) - 1.0f; | |
| var s_diff_dx_T_0 : f32 = - _s_dOut_0[i32(1)]; | |
| var _S223 : f32 = s_primal_ctx_exp_0(_S222) * s_diff_dx_T_0; | |
| var _S224 : f32 = s_primal_ctx_cos_0(x_2) * s_diff_dx_T_0; | |
| var _S225 : DiffPair_float_0; | |
| _S225.primal_0 = x_2; | |
| _S225.differential_0 = 0.0f; | |
| s_bwd_prop_cos_0(&(_S225), _S223); | |
| var _S226 : f32 = _s_dOut_0[i32(0)] + _S224; | |
| var _S227 : DiffPair_float_0; | |
| _S227.primal_0 = _S222; | |
| _S227.differential_0 = 0.0f; | |
| s_bwd_prop_exp_0(&(_S227), _S226); | |
| var _S228 : DiffPair_float_0; | |
| _S228.primal_0 = x_2; | |
| _S228.differential_0 = 0.0f; | |
| s_bwd_prop_sin_0(&(_S228), _S227.differential_0); | |
| var _S229 : f32 = _S225.differential_0 + _S228.differential_0; | |
| var _S230 : f32 = _S221 * _S229; | |
| var _S231 : f32 = (*dpfrequency_1).primal_0 * _S229; | |
| var _S232 : vec2<f32> = vec2<f32>(0.0f); | |
| var _S233 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S233.primal_0 = (*dpdirection_1).primal_0; | |
| _S233.differential_0 = _S232; | |
| var _S234 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S234.primal_0 = (*dpposition_2).primal_0; | |
| _S234.differential_0 = _S232; | |
| s_bwd_prop_dot_0(&(_S233), &(_S234), _S231); | |
| (*dptimeshift_1).primal_0 = (*dptimeshift_1).primal_0; | |
| (*dptimeshift_1).differential_0 = _S229; | |
| (*dpfrequency_1).primal_0 = (*dpfrequency_1).primal_0; | |
| (*dpfrequency_1).differential_0 = _S230; | |
| (*dpdirection_1).primal_0 = (*dpdirection_1).primal_0; | |
| (*dpdirection_1).differential_0 = _S233.differential_0; | |
| (*dpposition_2).primal_0 = (*dpposition_2).primal_0; | |
| (*dpposition_2).differential_0 = _S234.differential_0; | |
| return; | |
| } | |
| fn s_bwd_prop_sqrt_0( _S235 : ptr<function, DiffPair_float_0>, _S236 : f32) | |
| { | |
| _d_sqrt_0(&((*_S235)), _S236); | |
| return; | |
| } | |
| fn s_bwd_prop_length_impl_0( dpx_5 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _s_dOut_1 : f32) | |
| { | |
| var _S237 : f32 = (*dpx_5).primal_0[i32(0)]; | |
| var _S238 : f32 = (*dpx_5).primal_0[i32(1)]; | |
| var _S239 : DiffPair_float_0; | |
| _S239.primal_0 = _S237 * _S237 + _S238 * _S238; | |
| _S239.differential_0 = 0.0f; | |
| s_bwd_prop_sqrt_0(&(_S239), _s_dOut_1); | |
| var _S240 : f32 = (*dpx_5).primal_0[i32(1)] * _S239.differential_0; | |
| var _S241 : f32 = _S240 + _S240; | |
| var _S242 : f32 = (*dpx_5).primal_0[i32(0)] * _S239.differential_0; | |
| var _S243 : f32 = _S242 + _S242; | |
| var _S244 : vec2<f32> = vec2<f32>(0.0f); | |
| _S244[i32(1)] = _S241; | |
| _S244[i32(0)] = _S243; | |
| (*dpx_5).primal_0 = (*dpx_5).primal_0; | |
| (*dpx_5).differential_0 = _S244; | |
| return; | |
| } | |
| fn s_bwd_length_impl_0( _S245 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _S246 : f32) | |
| { | |
| s_bwd_prop_length_impl_0(&((*_S245)), _S246); | |
| return; | |
| } | |
| fn s_bwd_prop_getwaves_0( dpposition_3 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _s_dOut_2 : f32, _s_diff_ctx_1 : s_bwd_prop_getwaves_Intermediates_0) | |
| { | |
| var _S247 : f32 = length((*dpposition_3).primal_0) * 0.10000000149011612f; | |
| var p_47 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(0.0f), s_primal_ctx_cos_0(0.0f)); | |
| var _S248 : f32 = globalParams_0.time_0 * 5.0f + _S247; | |
| var _S249 : vec2<f32> = vec2<f32>(0.37999999523162842f); | |
| var _S250 : vec2<f32> = (*dpposition_3).primal_0 + p_47 * vec2<f32>(_s_diff_ctx_1._S55.y) * _S249; | |
| var _S251 : f32 = s_primal_ctx_lerp_0(1.0f, 0.0f, 0.20000000298023224f); | |
| var _S252 : vec2<f32> = vec2<f32>(_S251); | |
| var p_48 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(1232.39990234375f), s_primal_ctx_cos_0(1232.39990234375f)); | |
| var _S253 : f32 = globalParams_0.time_0 * 5.35000038146972656f + _S247; | |
| var _S254 : vec2<f32> = _S250 + p_48 * vec2<f32>(_s_diff_ctx_1._S56.y) * _S252 * _S249; | |
| var _S255 : f32 = s_primal_ctx_lerp_0(_S251, 0.0f, 0.20000000298023224f); | |
| var _S256 : vec2<f32> = vec2<f32>(_S255); | |
| var p_49 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(2464.7998046875f), s_primal_ctx_cos_0(2464.7998046875f)); | |
| var _S257 : f32 = globalParams_0.time_0 * 5.72450065612792969f + _S247; | |
| var _S258 : vec2<f32> = _S254 + p_49 * vec2<f32>(_s_diff_ctx_1._S57.y) * _S256 * _S249; | |
| var _S259 : f32 = s_primal_ctx_lerp_0(_S255, 0.0f, 0.20000000298023224f); | |
| var _S260 : vec2<f32> = vec2<f32>(_S259); | |
| var p_50 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(3697.19970703125f), s_primal_ctx_cos_0(3697.19970703125f)); | |
| var _S261 : f32 = globalParams_0.time_0 * 6.12521600723266602f + _S247; | |
| var _S262 : vec2<f32> = _S258 + p_50 * vec2<f32>(_s_diff_ctx_1._S58.y) * _S260 * _S249; | |
| var _S263 : f32 = s_primal_ctx_lerp_0(_S259, 0.0f, 0.20000000298023224f); | |
| var _S264 : vec2<f32> = vec2<f32>(_S263); | |
| var p_51 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(4929.599609375f), s_primal_ctx_cos_0(4929.599609375f)); | |
| var _S265 : f32 = globalParams_0.time_0 * 6.55398130416870117f + _S247; | |
| var _S266 : vec2<f32> = _S262 + p_51 * vec2<f32>(_s_diff_ctx_1._S59.y) * _S264 * _S249; | |
| var _S267 : f32 = s_primal_ctx_lerp_0(_S263, 0.0f, 0.20000000298023224f); | |
| var _S268 : vec2<f32> = vec2<f32>(_S267); | |
| var p_52 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(6161.99951171875f), s_primal_ctx_cos_0(6161.99951171875f)); | |
| var _S269 : f32 = globalParams_0.time_0 * 7.01276016235351562f + _S247; | |
| var _S270 : vec2<f32> = _S266 + p_52 * vec2<f32>(_s_diff_ctx_1._S60.y) * _S268 * _S249; | |
| var _S271 : f32 = s_primal_ctx_lerp_0(_S267, 0.0f, 0.20000000298023224f); | |
| var _S272 : vec2<f32> = vec2<f32>(_S271); | |
| var p_53 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(7394.3994140625f), s_primal_ctx_cos_0(7394.3994140625f)); | |
| var _S273 : f32 = globalParams_0.time_0 * 7.50365352630615234f + _S247; | |
| var _S274 : vec2<f32> = _S270 + p_53 * vec2<f32>(_s_diff_ctx_1._S61.y) * _S272 * _S249; | |
| var _S275 : f32 = s_primal_ctx_lerp_0(_S271, 0.0f, 0.20000000298023224f); | |
| var _S276 : vec2<f32> = vec2<f32>(_S275); | |
| var p_54 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(8626.798828125f), s_primal_ctx_cos_0(8626.798828125f)); | |
| var _S277 : f32 = globalParams_0.time_0 * 8.02890968322753906f + _S247; | |
| var _S278 : vec2<f32> = _S274 + p_54 * vec2<f32>(_s_diff_ctx_1._S62.y) * _S276 * _S249; | |
| var _S279 : f32 = s_primal_ctx_lerp_0(_S275, 0.0f, 0.20000000298023224f); | |
| var _S280 : vec2<f32> = vec2<f32>(_S279); | |
| var p_55 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(9859.19921875f), s_primal_ctx_cos_0(9859.19921875f)); | |
| var _S281 : f32 = globalParams_0.time_0 * 8.59093379974365234f + _S247; | |
| var _S282 : vec2<f32> = _S278 + p_55 * vec2<f32>(_s_diff_ctx_1._S63.y) * _S280 * _S249; | |
| var _S283 : f32 = s_primal_ctx_lerp_0(_S279, 0.0f, 0.20000000298023224f); | |
| var _S284 : vec2<f32> = vec2<f32>(_S283); | |
| var p_56 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(11091.599609375f), s_primal_ctx_cos_0(11091.599609375f)); | |
| var _S285 : f32 = globalParams_0.time_0 * 9.19229984283447266f + _S247; | |
| var _S286 : vec2<f32> = _S282 + p_56 * vec2<f32>(_s_diff_ctx_1._S64.y) * _S284 * _S249; | |
| var _S287 : f32 = s_primal_ctx_lerp_0(_S283, 0.0f, 0.20000000298023224f); | |
| var _S288 : vec2<f32> = vec2<f32>(_S287); | |
| var p_57 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(12324.0f), s_primal_ctx_cos_0(12324.0f)); | |
| var _S289 : f32 = globalParams_0.time_0 * 9.83576107025146484f + _S247; | |
| var _S290 : vec2<f32> = _S286 + p_57 * vec2<f32>(_s_diff_ctx_1._S65.y) * _S288 * _S249; | |
| var _S291 : f32 = s_primal_ctx_lerp_0(_S287, 0.0f, 0.20000000298023224f); | |
| var _S292 : vec2<f32> = vec2<f32>(_S291); | |
| var p_58 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(13556.400390625f), s_primal_ctx_cos_0(13556.400390625f)); | |
| var _S293 : f32 = globalParams_0.time_0 * 10.52426528930664062f + _S247; | |
| var _S294 : vec2<f32> = _S290 + p_58 * vec2<f32>(_s_diff_ctx_1._S66.y) * _S292 * _S249; | |
| var _S295 : f32 = s_primal_ctx_lerp_0(_S291, 0.0f, 0.20000000298023224f); | |
| var _S296 : vec2<f32> = vec2<f32>(_S295); | |
| var p_59 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(14788.80078125f), s_primal_ctx_cos_0(14788.80078125f)); | |
| var _S297 : f32 = globalParams_0.time_0 * 11.26096439361572266f + _S247; | |
| var _S298 : vec2<f32> = _S294 + p_59 * vec2<f32>(_s_diff_ctx_1._S67.y) * _S296 * _S249; | |
| var _S299 : f32 = s_primal_ctx_lerp_0(_S295, 0.0f, 0.20000000298023224f); | |
| var _S300 : vec2<f32> = vec2<f32>(_S299); | |
| var p_60 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(16021.201171875f), s_primal_ctx_cos_0(16021.201171875f)); | |
| var _S301 : f32 = globalParams_0.time_0 * 12.04923248291015625f + _S247; | |
| var _S302 : vec2<f32> = _S298 + p_60 * vec2<f32>(_s_diff_ctx_1._S68.y) * _S300 * _S249; | |
| var _S303 : f32 = s_primal_ctx_lerp_0(_S299, 0.0f, 0.20000000298023224f); | |
| var _S304 : vec2<f32> = vec2<f32>(_S303); | |
| var p_61 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(17253.6015625f), s_primal_ctx_cos_0(17253.6015625f)); | |
| var _S305 : f32 = globalParams_0.time_0 * 12.89267921447753906f + _S247; | |
| var _S306 : vec2<f32> = _S302 + p_61 * vec2<f32>(_s_diff_ctx_1._S69.y) * _S304 * _S249; | |
| var _S307 : f32 = s_primal_ctx_lerp_0(_S303, 0.0f, 0.20000000298023224f); | |
| var _S308 : vec2<f32> = vec2<f32>(_S307); | |
| var p_62 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(18486.001953125f), s_primal_ctx_cos_0(18486.001953125f)); | |
| var _S309 : f32 = globalParams_0.time_0 * 13.79516696929931641f + _S247; | |
| var _S310 : vec2<f32> = _S306 + p_62 * vec2<f32>(_s_diff_ctx_1._S70.y) * _S308 * _S249; | |
| var _S311 : f32 = s_primal_ctx_lerp_0(_S307, 0.0f, 0.20000000298023224f); | |
| var _S312 : vec2<f32> = vec2<f32>(_S311); | |
| var p_63 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(19718.40234375f), s_primal_ctx_cos_0(19718.40234375f)); | |
| var _S313 : f32 = globalParams_0.time_0 * 14.76082897186279297f + _S247; | |
| var _S314 : vec2<f32> = _S310 + p_63 * vec2<f32>(_s_diff_ctx_1._S71.y) * _S312 * _S249; | |
| var _S315 : f32 = s_primal_ctx_lerp_0(_S311, 0.0f, 0.20000000298023224f); | |
| var _S316 : vec2<f32> = vec2<f32>(_S315); | |
| var p_64 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(20950.802734375f), s_primal_ctx_cos_0(20950.802734375f)); | |
| var _S317 : f32 = globalParams_0.time_0 * 15.79408740997314453f + _S247; | |
| var _S318 : vec2<f32> = _S314 + p_64 * vec2<f32>(_s_diff_ctx_1._S72.y) * _S316 * _S249; | |
| var _S319 : f32 = s_primal_ctx_lerp_0(_S315, 0.0f, 0.20000000298023224f); | |
| var _S320 : vec2<f32> = vec2<f32>(_S319); | |
| var p_65 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(22183.203125f), s_primal_ctx_cos_0(22183.203125f)); | |
| var _S321 : f32 = globalParams_0.time_0 * 16.8996734619140625f + _S247; | |
| var _S322 : vec2<f32> = _S318 + p_65 * vec2<f32>(_s_diff_ctx_1._S73.y) * _S320 * _S249; | |
| var _S323 : f32 = s_primal_ctx_lerp_0(_S319, 0.0f, 0.20000000298023224f); | |
| var _S324 : vec2<f32> = vec2<f32>(_S323); | |
| var p_66 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(23415.603515625f), s_primal_ctx_cos_0(23415.603515625f)); | |
| var _S325 : f32 = globalParams_0.time_0 * 18.08265113830566406f + _S247; | |
| var _S326 : vec2<f32> = _S322 + p_66 * vec2<f32>(_s_diff_ctx_1._S74.y) * _S324 * _S249; | |
| var _S327 : f32 = s_primal_ctx_lerp_0(_S323, 0.0f, 0.20000000298023224f); | |
| var _S328 : vec2<f32> = vec2<f32>(_S327); | |
| var p_67 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(24648.00390625f), s_primal_ctx_cos_0(24648.00390625f)); | |
| var _S329 : f32 = globalParams_0.time_0 * 19.34843826293945312f + _S247; | |
| var _S330 : vec2<f32> = _S326 + p_67 * vec2<f32>(_s_diff_ctx_1._S75.y) * _S328 * _S249; | |
| var _S331 : f32 = s_primal_ctx_lerp_0(_S327, 0.0f, 0.20000000298023224f); | |
| var _S332 : vec2<f32> = vec2<f32>(_S331); | |
| var p_68 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(25880.404296875f), s_primal_ctx_cos_0(25880.404296875f)); | |
| var _S333 : f32 = globalParams_0.time_0 * 20.70282936096191406f + _S247; | |
| var _S334 : vec2<f32> = _S330 + p_68 * vec2<f32>(_s_diff_ctx_1._S76.y) * _S332 * _S249; | |
| var _S335 : f32 = s_primal_ctx_lerp_0(_S331, 0.0f, 0.20000000298023224f); | |
| var _S336 : vec2<f32> = vec2<f32>(_S335); | |
| var p_69 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(27112.8046875f), s_primal_ctx_cos_0(27112.8046875f)); | |
| var _S337 : f32 = globalParams_0.time_0 * 22.15202903747558594f + _S247; | |
| var _S338 : vec2<f32> = _S334 + p_69 * vec2<f32>(_s_diff_ctx_1._S77.y) * _S336 * _S249; | |
| var _S339 : f32 = s_primal_ctx_lerp_0(_S335, 0.0f, 0.20000000298023224f); | |
| var _S340 : vec2<f32> = vec2<f32>(_S339); | |
| var p_70 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(28345.205078125f), s_primal_ctx_cos_0(28345.205078125f)); | |
| var _S341 : f32 = globalParams_0.time_0 * 23.70267295837402344f + _S247; | |
| var _S342 : vec2<f32> = _S338 + p_70 * vec2<f32>(_s_diff_ctx_1._S78.y) * _S340 * _S249; | |
| var _S343 : f32 = s_primal_ctx_lerp_0(_S339, 0.0f, 0.20000000298023224f); | |
| var _S344 : vec2<f32> = vec2<f32>(_S343); | |
| var p_71 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(29577.60546875f), s_primal_ctx_cos_0(29577.60546875f)); | |
| var _S345 : f32 = globalParams_0.time_0 * 25.3618621826171875f + _S247; | |
| var _S346 : vec2<f32> = _S342 + p_71 * vec2<f32>(_s_diff_ctx_1._S79.y) * _S344 * _S249; | |
| var _S347 : f32 = s_primal_ctx_lerp_0(_S343, 0.0f, 0.20000000298023224f); | |
| var _S348 : vec2<f32> = vec2<f32>(_S347); | |
| var p_72 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(30810.005859375f), s_primal_ctx_cos_0(30810.005859375f)); | |
| var _S349 : f32 = globalParams_0.time_0 * 27.13719367980957031f + _S247; | |
| var _S350 : vec2<f32> = _S346 + p_72 * vec2<f32>(_s_diff_ctx_1._S80.y) * _S348 * _S249; | |
| var _S351 : f32 = s_primal_ctx_lerp_0(_S347, 0.0f, 0.20000000298023224f); | |
| var _S352 : vec2<f32> = vec2<f32>(_S351); | |
| var p_73 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(32042.40625f), s_primal_ctx_cos_0(32042.40625f)); | |
| var _S353 : f32 = globalParams_0.time_0 * 29.03679847717285156f + _S247; | |
| var _S354 : vec2<f32> = _S350 + p_73 * vec2<f32>(_s_diff_ctx_1._S81.y) * _S352 * _S249; | |
| var _S355 : f32 = s_primal_ctx_lerp_0(_S351, 0.0f, 0.20000000298023224f); | |
| var _S356 : vec2<f32> = vec2<f32>(_S355); | |
| var p_74 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(33274.8046875f), s_primal_ctx_cos_0(33274.8046875f)); | |
| var _S357 : f32 = globalParams_0.time_0 * 31.06937599182128906f + _S247; | |
| var _S358 : vec2<f32> = _S354 + p_74 * vec2<f32>(_s_diff_ctx_1._S82.y) * _S356 * _S249; | |
| var _S359 : f32 = s_primal_ctx_lerp_0(_S355, 0.0f, 0.20000000298023224f); | |
| var _S360 : vec2<f32> = vec2<f32>(_S359); | |
| var p_75 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(34507.203125f), s_primal_ctx_cos_0(34507.203125f)); | |
| var _S361 : f32 = globalParams_0.time_0 * 33.244232177734375f + _S247; | |
| var _S362 : vec2<f32> = _S358 + p_75 * vec2<f32>(_s_diff_ctx_1._S83.y) * _S360 * _S249; | |
| var _S363 : f32 = s_primal_ctx_lerp_0(_S359, 0.0f, 0.20000000298023224f); | |
| var _S364 : vec2<f32> = vec2<f32>(_S363); | |
| var p_76 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(35739.6015625f), s_primal_ctx_cos_0(35739.6015625f)); | |
| var _S365 : f32 = globalParams_0.time_0 * 35.57133102416992188f + _S247; | |
| var _S366 : vec2<f32> = _S362 + p_76 * vec2<f32>(_s_diff_ctx_1._S84.y) * _S364 * _S249; | |
| var _S367 : f32 = s_primal_ctx_lerp_0(_S363, 0.0f, 0.20000000298023224f); | |
| var _S368 : vec2<f32> = vec2<f32>(_S367); | |
| var p_77 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(36972.0f), s_primal_ctx_cos_0(36972.0f)); | |
| var _S369 : f32 = globalParams_0.time_0 * 38.0613250732421875f + _S247; | |
| var _S370 : vec2<f32> = _S366 + p_77 * vec2<f32>(_s_diff_ctx_1._S85.y) * _S368 * _S249; | |
| var _S371 : f32 = s_primal_ctx_lerp_0(_S367, 0.0f, 0.20000000298023224f); | |
| var _S372 : vec2<f32> = vec2<f32>(_S371); | |
| var p_78 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(38204.3984375f), s_primal_ctx_cos_0(38204.3984375f)); | |
| var _S373 : f32 = globalParams_0.time_0 * 40.72562026977539062f + _S247; | |
| var _S374 : vec2<f32> = _S370 + p_78 * vec2<f32>(_s_diff_ctx_1._S86.y) * _S372 * _S249; | |
| var _S375 : f32 = s_primal_ctx_lerp_0(_S371, 0.0f, 0.20000000298023224f); | |
| var _S376 : vec2<f32> = vec2<f32>(_S375); | |
| var p_79 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(39436.796875f), s_primal_ctx_cos_0(39436.796875f)); | |
| var _S377 : f32 = globalParams_0.time_0 * 43.576416015625f + _S247; | |
| var _S378 : vec2<f32> = _S374 + p_79 * vec2<f32>(_s_diff_ctx_1._S87.y) * _S376 * _S249; | |
| var _S379 : f32 = s_primal_ctx_lerp_0(_S375, 0.0f, 0.20000000298023224f); | |
| var _S380 : vec2<f32> = vec2<f32>(_S379); | |
| var p_80 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(40669.1953125f), s_primal_ctx_cos_0(40669.1953125f)); | |
| var _S381 : f32 = globalParams_0.time_0 * 46.62676620483398438f + _S247; | |
| var _S382 : vec2<f32> = _S378 + p_80 * vec2<f32>(_s_diff_ctx_1._S88.y) * _S380 * _S249; | |
| var _S383 : f32 = s_primal_ctx_lerp_0(_S379, 0.0f, 0.20000000298023224f); | |
| var _S384 : vec2<f32> = vec2<f32>(_S383); | |
| var p_81 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(41901.59375f), s_primal_ctx_cos_0(41901.59375f)); | |
| var _S385 : f32 = globalParams_0.time_0 * 49.89064407348632812f + _S247; | |
| var _S386 : vec2<f32> = _S382 + p_81 * vec2<f32>(_s_diff_ctx_1._S89.y) * _S384 * _S249; | |
| var _S387 : f32 = s_primal_ctx_lerp_0(_S383, 0.0f, 0.20000000298023224f); | |
| var _S388 : vec2<f32> = vec2<f32>(_S387); | |
| var p_82 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(43133.9921875f), s_primal_ctx_cos_0(43133.9921875f)); | |
| var _S389 : f32 = globalParams_0.time_0 * 53.38299179077148438f + _S247; | |
| var _S390 : f32 = s_primal_ctx_lerp_0(_S387, 0.0f, 0.20000000298023224f); | |
| var p_83 : vec2<f32> = vec2<f32>(s_primal_ctx_sin_0(44366.390625f), s_primal_ctx_cos_0(44366.390625f)); | |
| var _S391 : f32 = globalParams_0.time_0 * 57.11980438232421875f + _S247; | |
| var sumOfWeights_34 : f32 = 1.0f + _S251 + _S255 + _S259 + _S263 + _S267 + _S271 + _S275 + _S279 + _S283 + _S287 + _S291 + _S295 + _S299 + _S303 + _S307 + _S311 + _S315 + _S319 + _S323 + _S327 + _S331 + _S335 + _S339 + _S343 + _S347 + _S351 + _S355 + _S359 + _S363 + _S367 + _S371 + _S375 + _S379 + _S383 + _S387 + _S390; | |
| var s_diff_sumOfValues_T_0 : f32 = sumOfWeights_34 * (_s_dOut_2 / (sumOfWeights_34 * sumOfWeights_34)); | |
| var _S392 : vec2<f32> = vec2<f32>(_S390 * s_diff_sumOfValues_T_0, 0.0f); | |
| var _S393 : vec2<f32> = vec2<f32>(0.0f); | |
| var _S394 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S394.primal_0 = _S386 + p_82 * vec2<f32>(_s_diff_ctx_1._S90.y) * _S388 * _S249; | |
| _S394.differential_0 = _S393; | |
| var _S395 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S395.primal_0 = p_83; | |
| _S395.differential_0 = _S393; | |
| var _S396 : DiffPair_float_0; | |
| _S396.primal_0 = 387.036163330078125f; | |
| _S396.differential_0 = 0.0f; | |
| var _S397 : DiffPair_float_0; | |
| _S397.primal_0 = _S391; | |
| _S397.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S394), &(_S395), &(_S396), &(_S397), _S392); | |
| var _S398 : vec2<f32> = p_82 * (_S388 * (vec2<f32>(0.37999999523162842f) * _S394.differential_0)); | |
| var _S399 : vec2<f32> = vec2<f32>(_S387 * s_diff_sumOfValues_T_0, _S398[i32(0)] + _S398[i32(1)]); | |
| var _S400 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S400.primal_0 = _S386; | |
| _S400.differential_0 = _S393; | |
| var _S401 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S401.primal_0 = p_82; | |
| _S401.differential_0 = _S393; | |
| var _S402 : DiffPair_float_0; | |
| _S402.primal_0 = 327.99676513671875f; | |
| _S402.differential_0 = 0.0f; | |
| var _S403 : DiffPair_float_0; | |
| _S403.primal_0 = _S389; | |
| _S403.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S400), &(_S401), &(_S402), &(_S403), _S399); | |
| var _S404 : vec2<f32> = _S394.differential_0 + _S400.differential_0; | |
| var _S405 : vec2<f32> = p_81 * (_S384 * (vec2<f32>(0.37999999523162842f) * _S404)); | |
| var _S406 : vec2<f32> = vec2<f32>(_S383 * s_diff_sumOfValues_T_0, _S405[i32(0)] + _S405[i32(1)]); | |
| var _S407 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S407.primal_0 = _S382; | |
| _S407.differential_0 = _S393; | |
| var _S408 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S408.primal_0 = p_81; | |
| _S408.differential_0 = _S393; | |
| var _S409 : DiffPair_float_0; | |
| _S409.primal_0 = 277.96337890625f; | |
| _S409.differential_0 = 0.0f; | |
| var _S410 : DiffPair_float_0; | |
| _S410.primal_0 = _S385; | |
| _S410.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S407), &(_S408), &(_S409), &(_S410), _S406); | |
| var _S411 : vec2<f32> = _S404 + _S407.differential_0; | |
| var _S412 : vec2<f32> = p_80 * (_S380 * (vec2<f32>(0.37999999523162842f) * _S411)); | |
| var _S413 : vec2<f32> = vec2<f32>(_S379 * s_diff_sumOfValues_T_0, _S412[i32(0)] + _S412[i32(1)]); | |
| var _S414 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S414.primal_0 = _S378; | |
| _S414.differential_0 = _S393; | |
| var _S415 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S415.primal_0 = p_80; | |
| _S415.differential_0 = _S393; | |
| var _S416 : DiffPair_float_0; | |
| _S416.primal_0 = 235.56219482421875f; | |
| _S416.differential_0 = 0.0f; | |
| var _S417 : DiffPair_float_0; | |
| _S417.primal_0 = _S381; | |
| _S417.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S414), &(_S415), &(_S416), &(_S417), _S413); | |
| var _S418 : vec2<f32> = _S411 + _S414.differential_0; | |
| var _S419 : vec2<f32> = p_79 * (_S376 * (vec2<f32>(0.37999999523162842f) * _S418)); | |
| var _S420 : vec2<f32> = vec2<f32>(_S375 * s_diff_sumOfValues_T_0, _S419[i32(0)] + _S419[i32(1)]); | |
| var _S421 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S421.primal_0 = _S374; | |
| _S421.differential_0 = _S393; | |
| var _S422 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S422.primal_0 = p_79; | |
| _S422.differential_0 = _S393; | |
| var _S423 : DiffPair_float_0; | |
| _S423.primal_0 = 199.6289825439453125f; | |
| _S423.differential_0 = 0.0f; | |
| var _S424 : DiffPair_float_0; | |
| _S424.primal_0 = _S377; | |
| _S424.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S421), &(_S422), &(_S423), &(_S424), _S420); | |
| var _S425 : vec2<f32> = _S418 + _S421.differential_0; | |
| var _S426 : vec2<f32> = p_78 * (_S372 * (vec2<f32>(0.37999999523162842f) * _S425)); | |
| var _S427 : vec2<f32> = vec2<f32>(_S371 * s_diff_sumOfValues_T_0, _S426[i32(0)] + _S426[i32(1)]); | |
| var _S428 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S428.primal_0 = _S370; | |
| _S428.differential_0 = _S393; | |
| var _S429 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S429.primal_0 = p_78; | |
| _S429.differential_0 = _S393; | |
| var _S430 : DiffPair_float_0; | |
| _S430.primal_0 = 169.1771087646484375f; | |
| _S430.differential_0 = 0.0f; | |
| var _S431 : DiffPair_float_0; | |
| _S431.primal_0 = _S373; | |
| _S431.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S428), &(_S429), &(_S430), &(_S431), _S427); | |
| var _S432 : vec2<f32> = _S425 + _S428.differential_0; | |
| var _S433 : vec2<f32> = p_77 * (_S368 * (vec2<f32>(0.37999999523162842f) * _S432)); | |
| var _S434 : vec2<f32> = vec2<f32>(_S367 * s_diff_sumOfValues_T_0, _S433[i32(0)] + _S433[i32(1)]); | |
| var _S435 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S435.primal_0 = _S366; | |
| _S435.differential_0 = _S393; | |
| var _S436 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S436.primal_0 = p_77; | |
| _S436.differential_0 = _S393; | |
| var _S437 : DiffPair_float_0; | |
| _S437.primal_0 = 143.3704376220703125f; | |
| _S437.differential_0 = 0.0f; | |
| var _S438 : DiffPair_float_0; | |
| _S438.primal_0 = _S369; | |
| _S438.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S435), &(_S436), &(_S437), &(_S438), _S434); | |
| var _S439 : vec2<f32> = _S432 + _S435.differential_0; | |
| var _S440 : vec2<f32> = p_76 * (_S364 * (vec2<f32>(0.37999999523162842f) * _S439)); | |
| var _S441 : vec2<f32> = vec2<f32>(_S363 * s_diff_sumOfValues_T_0, _S440[i32(0)] + _S440[i32(1)]); | |
| var _S442 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S442.primal_0 = _S362; | |
| _S442.differential_0 = _S393; | |
| var _S443 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S443.primal_0 = p_76; | |
| _S443.differential_0 = _S393; | |
| var _S444 : DiffPair_float_0; | |
| _S444.primal_0 = 121.50037384033203125f; | |
| _S444.differential_0 = 0.0f; | |
| var _S445 : DiffPair_float_0; | |
| _S445.primal_0 = _S365; | |
| _S445.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S442), &(_S443), &(_S444), &(_S445), _S441); | |
| var _S446 : vec2<f32> = _S439 + _S442.differential_0; | |
| var _S447 : vec2<f32> = p_75 * (_S360 * (vec2<f32>(0.37999999523162842f) * _S446)); | |
| var _S448 : vec2<f32> = vec2<f32>(_S359 * s_diff_sumOfValues_T_0, _S447[i32(0)] + _S447[i32(1)]); | |
| var _S449 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S449.primal_0 = _S358; | |
| _S449.differential_0 = _S393; | |
| var _S450 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S450.primal_0 = p_75; | |
| _S450.differential_0 = _S393; | |
| var _S451 : DiffPair_float_0; | |
| _S451.primal_0 = 102.96642303466796875f; | |
| _S451.differential_0 = 0.0f; | |
| var _S452 : DiffPair_float_0; | |
| _S452.primal_0 = _S361; | |
| _S452.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S449), &(_S450), &(_S451), &(_S452), _S448); | |
| var _S453 : vec2<f32> = _S446 + _S449.differential_0; | |
| var _S454 : vec2<f32> = p_74 * (_S356 * (vec2<f32>(0.37999999523162842f) * _S453)); | |
| var _S455 : vec2<f32> = vec2<f32>(_S355 * s_diff_sumOfValues_T_0, _S454[i32(0)] + _S454[i32(1)]); | |
| var _S456 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S456.primal_0 = _S354; | |
| _S456.differential_0 = _S393; | |
| var _S457 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S457.primal_0 = p_74; | |
| _S457.differential_0 = _S393; | |
| var _S458 : DiffPair_float_0; | |
| _S458.primal_0 = 87.25968170166015625f; | |
| _S458.differential_0 = 0.0f; | |
| var _S459 : DiffPair_float_0; | |
| _S459.primal_0 = _S357; | |
| _S459.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S456), &(_S457), &(_S458), &(_S459), _S455); | |
| var _S460 : vec2<f32> = _S453 + _S456.differential_0; | |
| var _S461 : vec2<f32> = p_73 * (_S352 * (vec2<f32>(0.37999999523162842f) * _S460)); | |
| var _S462 : vec2<f32> = vec2<f32>(_S351 * s_diff_sumOfValues_T_0, _S461[i32(0)] + _S461[i32(1)]); | |
| var _S463 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S463.primal_0 = _S350; | |
| _S463.differential_0 = _S393; | |
| var _S464 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S464.primal_0 = p_73; | |
| _S464.differential_0 = _S393; | |
| var _S465 : DiffPair_float_0; | |
| _S465.primal_0 = 73.948883056640625f; | |
| _S465.differential_0 = 0.0f; | |
| var _S466 : DiffPair_float_0; | |
| _S466.primal_0 = _S353; | |
| _S466.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S463), &(_S464), &(_S465), &(_S466), _S462); | |
| var _S467 : vec2<f32> = _S460 + _S463.differential_0; | |
| var _S468 : vec2<f32> = p_72 * (_S348 * (vec2<f32>(0.37999999523162842f) * _S467)); | |
| var _S469 : vec2<f32> = vec2<f32>(_S347 * s_diff_sumOfValues_T_0, _S468[i32(0)] + _S468[i32(1)]); | |
| var _S470 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S470.primal_0 = _S346; | |
| _S470.differential_0 = _S393; | |
| var _S471 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S471.primal_0 = p_72; | |
| _S471.differential_0 = _S393; | |
| var _S472 : DiffPair_float_0; | |
| _S472.primal_0 = 62.66854476928710938f; | |
| _S472.differential_0 = 0.0f; | |
| var _S473 : DiffPair_float_0; | |
| _S473.primal_0 = _S349; | |
| _S473.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S470), &(_S471), &(_S472), &(_S473), _S469); | |
| var _S474 : vec2<f32> = _S467 + _S470.differential_0; | |
| var _S475 : vec2<f32> = p_71 * (_S344 * (vec2<f32>(0.37999999523162842f) * _S474)); | |
| var _S476 : vec2<f32> = vec2<f32>(_S343 * s_diff_sumOfValues_T_0, _S475[i32(0)] + _S475[i32(1)]); | |
| var _S477 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S477.primal_0 = _S342; | |
| _S477.differential_0 = _S393; | |
| var _S478 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S478.primal_0 = p_71; | |
| _S478.differential_0 = _S393; | |
| var _S479 : DiffPair_float_0; | |
| _S479.primal_0 = 53.10894012451171875f; | |
| _S479.differential_0 = 0.0f; | |
| var _S480 : DiffPair_float_0; | |
| _S480.primal_0 = _S345; | |
| _S480.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S477), &(_S478), &(_S479), &(_S480), _S476); | |
| var _S481 : vec2<f32> = _S474 + _S477.differential_0; | |
| var _S482 : vec2<f32> = p_70 * (_S340 * (vec2<f32>(0.37999999523162842f) * _S481)); | |
| var _S483 : vec2<f32> = vec2<f32>(_S339 * s_diff_sumOfValues_T_0, _S482[i32(0)] + _S482[i32(1)]); | |
| var _S484 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S484.primal_0 = _S338; | |
| _S484.differential_0 = _S393; | |
| var _S485 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S485.primal_0 = p_70; | |
| _S485.differential_0 = _S393; | |
| var _S486 : DiffPair_float_0; | |
| _S486.primal_0 = 45.00757980346679688f; | |
| _S486.differential_0 = 0.0f; | |
| var _S487 : DiffPair_float_0; | |
| _S487.primal_0 = _S341; | |
| _S487.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S484), &(_S485), &(_S486), &(_S487), _S483); | |
| var _S488 : vec2<f32> = _S481 + _S484.differential_0; | |
| var _S489 : vec2<f32> = p_69 * (_S336 * (vec2<f32>(0.37999999523162842f) * _S488)); | |
| var _S490 : vec2<f32> = vec2<f32>(_S335 * s_diff_sumOfValues_T_0, _S489[i32(0)] + _S489[i32(1)]); | |
| var _S491 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S491.primal_0 = _S334; | |
| _S491.differential_0 = _S393; | |
| var _S492 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S492.primal_0 = p_69; | |
| _S492.differential_0 = _S393; | |
| var _S493 : DiffPair_float_0; | |
| _S493.primal_0 = 38.14201736450195312f; | |
| _S493.differential_0 = 0.0f; | |
| var _S494 : DiffPair_float_0; | |
| _S494.primal_0 = _S337; | |
| _S494.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S491), &(_S492), &(_S493), &(_S494), _S490); | |
| var _S495 : vec2<f32> = _S488 + _S491.differential_0; | |
| var _S496 : vec2<f32> = p_68 * (_S332 * (vec2<f32>(0.37999999523162842f) * _S495)); | |
| var _S497 : vec2<f32> = vec2<f32>(_S331 * s_diff_sumOfValues_T_0, _S496[i32(0)] + _S496[i32(1)]); | |
| var _S498 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S498.primal_0 = _S330; | |
| _S498.differential_0 = _S393; | |
| var _S499 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S499.primal_0 = p_68; | |
| _S499.differential_0 = _S393; | |
| var _S500 : DiffPair_float_0; | |
| _S500.primal_0 = 32.3237457275390625f; | |
| _S500.differential_0 = 0.0f; | |
| var _S501 : DiffPair_float_0; | |
| _S501.primal_0 = _S333; | |
| _S501.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S498), &(_S499), &(_S500), &(_S501), _S497); | |
| var _S502 : vec2<f32> = _S495 + _S498.differential_0; | |
| var _S503 : vec2<f32> = p_67 * (_S328 * (vec2<f32>(0.37999999523162842f) * _S502)); | |
| var _S504 : vec2<f32> = vec2<f32>(_S327 * s_diff_sumOfValues_T_0, _S503[i32(0)] + _S503[i32(1)]); | |
| var _S505 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S505.primal_0 = _S326; | |
| _S505.differential_0 = _S393; | |
| var _S506 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S506.primal_0 = p_67; | |
| _S506.differential_0 = _S393; | |
| var _S507 : DiffPair_float_0; | |
| _S507.primal_0 = 27.39300727844238281f; | |
| _S507.differential_0 = 0.0f; | |
| var _S508 : DiffPair_float_0; | |
| _S508.primal_0 = _S329; | |
| _S508.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S505), &(_S506), &(_S507), &(_S508), _S504); | |
| var _S509 : vec2<f32> = _S502 + _S505.differential_0; | |
| var _S510 : vec2<f32> = p_66 * (_S324 * (vec2<f32>(0.37999999523162842f) * _S509)); | |
| var _S511 : vec2<f32> = vec2<f32>(_S323 * s_diff_sumOfValues_T_0, _S510[i32(0)] + _S510[i32(1)]); | |
| var _S512 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S512.primal_0 = _S322; | |
| _S512.differential_0 = _S393; | |
| var _S513 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S513.primal_0 = p_66; | |
| _S513.differential_0 = _S393; | |
| var _S514 : DiffPair_float_0; | |
| _S514.primal_0 = 23.21441459655761719f; | |
| _S514.differential_0 = 0.0f; | |
| var _S515 : DiffPair_float_0; | |
| _S515.primal_0 = _S325; | |
| _S515.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S512), &(_S513), &(_S514), &(_S515), _S511); | |
| var _S516 : vec2<f32> = _S509 + _S512.differential_0; | |
| var _S517 : vec2<f32> = p_65 * (_S320 * (vec2<f32>(0.37999999523162842f) * _S516)); | |
| var _S518 : vec2<f32> = vec2<f32>(_S319 * s_diff_sumOfValues_T_0, _S517[i32(0)] + _S517[i32(1)]); | |
| var _S519 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S519.primal_0 = _S318; | |
| _S519.differential_0 = _S393; | |
| var _S520 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S520.primal_0 = p_65; | |
| _S520.differential_0 = _S393; | |
| var _S521 : DiffPair_float_0; | |
| _S521.primal_0 = 19.6732330322265625f; | |
| _S521.differential_0 = 0.0f; | |
| var _S522 : DiffPair_float_0; | |
| _S522.primal_0 = _S321; | |
| _S522.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S519), &(_S520), &(_S521), &(_S522), _S518); | |
| var _S523 : vec2<f32> = _S516 + _S519.differential_0; | |
| var _S524 : vec2<f32> = p_64 * (_S316 * (vec2<f32>(0.37999999523162842f) * _S523)); | |
| var _S525 : vec2<f32> = vec2<f32>(_S315 * s_diff_sumOfValues_T_0, _S524[i32(0)] + _S524[i32(1)]); | |
| var _S526 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S526.primal_0 = _S314; | |
| _S526.differential_0 = _S393; | |
| var _S527 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S527.primal_0 = p_64; | |
| _S527.differential_0 = _S393; | |
| var _S528 : DiffPair_float_0; | |
| _S528.primal_0 = 16.67223167419433594f; | |
| _S528.differential_0 = 0.0f; | |
| var _S529 : DiffPair_float_0; | |
| _S529.primal_0 = _S317; | |
| _S529.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S526), &(_S527), &(_S528), &(_S529), _S525); | |
| var _S530 : vec2<f32> = _S523 + _S526.differential_0; | |
| var _S531 : vec2<f32> = p_63 * (_S312 * (vec2<f32>(0.37999999523162842f) * _S530)); | |
| var _S532 : vec2<f32> = vec2<f32>(_S311 * s_diff_sumOfValues_T_0, _S531[i32(0)] + _S531[i32(1)]); | |
| var _S533 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S533.primal_0 = _S310; | |
| _S533.differential_0 = _S393; | |
| var _S534 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S534.primal_0 = p_63; | |
| _S534.differential_0 = _S393; | |
| var _S535 : DiffPair_float_0; | |
| _S535.primal_0 = 14.12901115417480469f; | |
| _S535.differential_0 = 0.0f; | |
| var _S536 : DiffPair_float_0; | |
| _S536.primal_0 = _S313; | |
| _S536.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S533), &(_S534), &(_S535), &(_S536), _S532); | |
| var _S537 : vec2<f32> = _S530 + _S533.differential_0; | |
| var _S538 : vec2<f32> = p_62 * (_S308 * (vec2<f32>(0.37999999523162842f) * _S537)); | |
| var _S539 : vec2<f32> = vec2<f32>(_S307 * s_diff_sumOfValues_T_0, _S538[i32(0)] + _S538[i32(1)]); | |
| var _S540 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S540.primal_0 = _S306; | |
| _S540.differential_0 = _S393; | |
| var _S541 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S541.primal_0 = p_62; | |
| _S541.differential_0 = _S393; | |
| var _S542 : DiffPair_float_0; | |
| _S542.primal_0 = 11.97373867034912109f; | |
| _S542.differential_0 = 0.0f; | |
| var _S543 : DiffPair_float_0; | |
| _S543.primal_0 = _S309; | |
| _S543.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S540), &(_S541), &(_S542), &(_S543), _S539); | |
| var _S544 : vec2<f32> = _S537 + _S540.differential_0; | |
| var _S545 : vec2<f32> = p_61 * (_S304 * (vec2<f32>(0.37999999523162842f) * _S544)); | |
| var _S546 : vec2<f32> = vec2<f32>(_S303 * s_diff_sumOfValues_T_0, _S545[i32(0)] + _S545[i32(1)]); | |
| var _S547 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S547.primal_0 = _S302; | |
| _S547.differential_0 = _S393; | |
| var _S548 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S548.primal_0 = p_61; | |
| _S548.differential_0 = _S393; | |
| var _S549 : DiffPair_float_0; | |
| _S549.primal_0 = 10.14723682403564453f; | |
| _S549.differential_0 = 0.0f; | |
| var _S550 : DiffPair_float_0; | |
| _S550.primal_0 = _S305; | |
| _S550.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S547), &(_S548), &(_S549), &(_S550), _S546); | |
| var _S551 : vec2<f32> = _S544 + _S547.differential_0; | |
| var _S552 : vec2<f32> = p_60 * (_S300 * (vec2<f32>(0.37999999523162842f) * _S551)); | |
| var _S553 : vec2<f32> = vec2<f32>(_S299 * s_diff_sumOfValues_T_0, _S552[i32(0)] + _S552[i32(1)]); | |
| var _S554 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S554.primal_0 = _S298; | |
| _S554.differential_0 = _S393; | |
| var _S555 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S555.primal_0 = p_60; | |
| _S555.differential_0 = _S393; | |
| var _S556 : DiffPair_float_0; | |
| _S556.primal_0 = 8.59935379028320312f; | |
| _S556.differential_0 = 0.0f; | |
| var _S557 : DiffPair_float_0; | |
| _S557.primal_0 = _S301; | |
| _S557.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S554), &(_S555), &(_S556), &(_S557), _S553); | |
| var _S558 : vec2<f32> = _S551 + _S554.differential_0; | |
| var _S559 : vec2<f32> = p_59 * (_S296 * (vec2<f32>(0.37999999523162842f) * _S558)); | |
| var _S560 : vec2<f32> = vec2<f32>(_S295 * s_diff_sumOfValues_T_0, _S559[i32(0)] + _S559[i32(1)]); | |
| var _S561 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S561.primal_0 = _S294; | |
| _S561.differential_0 = _S393; | |
| var _S562 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S562.primal_0 = p_59; | |
| _S562.differential_0 = _S393; | |
| var _S563 : DiffPair_float_0; | |
| _S563.primal_0 = 7.28758859634399414f; | |
| _S563.differential_0 = 0.0f; | |
| var _S564 : DiffPair_float_0; | |
| _S564.primal_0 = _S297; | |
| _S564.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S561), &(_S562), &(_S563), &(_S564), _S560); | |
| var _S565 : vec2<f32> = _S558 + _S561.differential_0; | |
| var _S566 : vec2<f32> = p_58 * (_S292 * (vec2<f32>(0.37999999523162842f) * _S565)); | |
| var _S567 : vec2<f32> = vec2<f32>(_S291 * s_diff_sumOfValues_T_0, _S566[i32(0)] + _S566[i32(1)]); | |
| var _S568 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S568.primal_0 = _S290; | |
| _S568.differential_0 = _S393; | |
| var _S569 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S569.primal_0 = p_58; | |
| _S569.differential_0 = _S393; | |
| var _S570 : DiffPair_float_0; | |
| _S570.primal_0 = 6.17592287063598633f; | |
| _S570.differential_0 = 0.0f; | |
| var _S571 : DiffPair_float_0; | |
| _S571.primal_0 = _S293; | |
| _S571.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S568), &(_S569), &(_S570), &(_S571), _S567); | |
| var _S572 : vec2<f32> = _S565 + _S568.differential_0; | |
| var _S573 : vec2<f32> = p_57 * (_S288 * (vec2<f32>(0.37999999523162842f) * _S572)); | |
| var _S574 : vec2<f32> = vec2<f32>(_S287 * s_diff_sumOfValues_T_0, _S573[i32(0)] + _S573[i32(1)]); | |
| var _S575 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S575.primal_0 = _S286; | |
| _S575.differential_0 = _S393; | |
| var _S576 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S576.primal_0 = p_57; | |
| _S576.differential_0 = _S393; | |
| var _S577 : DiffPair_float_0; | |
| _S577.primal_0 = 5.23383331298828125f; | |
| _S577.differential_0 = 0.0f; | |
| var _S578 : DiffPair_float_0; | |
| _S578.primal_0 = _S289; | |
| _S578.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S575), &(_S576), &(_S577), &(_S578), _S574); | |
| var _S579 : vec2<f32> = _S572 + _S575.differential_0; | |
| var _S580 : vec2<f32> = p_56 * (_S284 * (vec2<f32>(0.37999999523162842f) * _S579)); | |
| var _S581 : vec2<f32> = vec2<f32>(_S283 * s_diff_sumOfValues_T_0, _S580[i32(0)] + _S580[i32(1)]); | |
| var _S582 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S582.primal_0 = _S282; | |
| _S582.differential_0 = _S393; | |
| var _S583 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S583.primal_0 = p_56; | |
| _S583.differential_0 = _S393; | |
| var _S584 : DiffPair_float_0; | |
| _S584.primal_0 = 4.43545198440551758f; | |
| _S584.differential_0 = 0.0f; | |
| var _S585 : DiffPair_float_0; | |
| _S585.primal_0 = _S285; | |
| _S585.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S582), &(_S583), &(_S584), &(_S585), _S581); | |
| var _S586 : vec2<f32> = _S579 + _S582.differential_0; | |
| var _S587 : vec2<f32> = p_55 * (_S280 * (vec2<f32>(0.37999999523162842f) * _S586)); | |
| var _S588 : vec2<f32> = vec2<f32>(_S279 * s_diff_sumOfValues_T_0, _S587[i32(0)] + _S587[i32(1)]); | |
| var _S589 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S589.primal_0 = _S278; | |
| _S589.differential_0 = _S393; | |
| var _S590 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S590.primal_0 = p_55; | |
| _S590.differential_0 = _S393; | |
| var _S591 : DiffPair_float_0; | |
| _S591.primal_0 = 3.75885796546936035f; | |
| _S591.differential_0 = 0.0f; | |
| var _S592 : DiffPair_float_0; | |
| _S592.primal_0 = _S281; | |
| _S592.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S589), &(_S590), &(_S591), &(_S592), _S588); | |
| var _S593 : vec2<f32> = _S586 + _S589.differential_0; | |
| var _S594 : vec2<f32> = p_54 * (_S276 * (vec2<f32>(0.37999999523162842f) * _S593)); | |
| var _S595 : vec2<f32> = vec2<f32>(_S275 * s_diff_sumOfValues_T_0, _S594[i32(0)] + _S594[i32(1)]); | |
| var _S596 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S596.primal_0 = _S274; | |
| _S596.differential_0 = _S393; | |
| var _S597 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S597.primal_0 = p_54; | |
| _S597.differential_0 = _S393; | |
| var _S598 : DiffPair_float_0; | |
| _S598.primal_0 = 3.18547296524047852f; | |
| _S598.differential_0 = 0.0f; | |
| var _S599 : DiffPair_float_0; | |
| _S599.primal_0 = _S277; | |
| _S599.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S596), &(_S597), &(_S598), &(_S599), _S595); | |
| var _S600 : vec2<f32> = _S593 + _S596.differential_0; | |
| var _S601 : vec2<f32> = p_53 * (_S272 * (vec2<f32>(0.37999999523162842f) * _S600)); | |
| var _S602 : vec2<f32> = vec2<f32>(_S271 * s_diff_sumOfValues_T_0, _S601[i32(0)] + _S601[i32(1)]); | |
| var _S603 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S603.primal_0 = _S270; | |
| _S603.differential_0 = _S393; | |
| var _S604 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S604.primal_0 = p_53; | |
| _S604.differential_0 = _S393; | |
| var _S605 : DiffPair_float_0; | |
| _S605.primal_0 = 2.69955348968505859f; | |
| _S605.differential_0 = 0.0f; | |
| var _S606 : DiffPair_float_0; | |
| _S606.primal_0 = _S273; | |
| _S606.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S603), &(_S604), &(_S605), &(_S606), _S602); | |
| var _S607 : vec2<f32> = _S600 + _S603.differential_0; | |
| var _S608 : vec2<f32> = p_52 * (_S268 * (vec2<f32>(0.37999999523162842f) * _S607)); | |
| var _S609 : vec2<f32> = vec2<f32>(_S267 * s_diff_sumOfValues_T_0, _S608[i32(0)] + _S608[i32(1)]); | |
| var _S610 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S610.primal_0 = _S266; | |
| _S610.differential_0 = _S393; | |
| var _S611 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S611.primal_0 = p_52; | |
| _S611.differential_0 = _S393; | |
| var _S612 : DiffPair_float_0; | |
| _S612.primal_0 = 2.28775739669799805f; | |
| _S612.differential_0 = 0.0f; | |
| var _S613 : DiffPair_float_0; | |
| _S613.primal_0 = _S269; | |
| _S613.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S610), &(_S611), &(_S612), &(_S613), _S609); | |
| var _S614 : vec2<f32> = _S607 + _S610.differential_0; | |
| var _S615 : vec2<f32> = p_51 * (_S264 * (vec2<f32>(0.37999999523162842f) * _S614)); | |
| var _S616 : vec2<f32> = vec2<f32>(_S263 * s_diff_sumOfValues_T_0, _S615[i32(0)] + _S615[i32(1)]); | |
| var _S617 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S617.primal_0 = _S262; | |
| _S617.differential_0 = _S393; | |
| var _S618 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S618.primal_0 = p_51; | |
| _S618.differential_0 = _S393; | |
| var _S619 : DiffPair_float_0; | |
| _S619.primal_0 = 1.93877744674682617f; | |
| _S619.differential_0 = 0.0f; | |
| var _S620 : DiffPair_float_0; | |
| _S620.primal_0 = _S265; | |
| _S620.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S617), &(_S618), &(_S619), &(_S620), _S616); | |
| var _S621 : vec2<f32> = _S614 + _S617.differential_0; | |
| var _S622 : vec2<f32> = p_50 * (_S260 * (vec2<f32>(0.37999999523162842f) * _S621)); | |
| var _S623 : vec2<f32> = vec2<f32>(_S259 * s_diff_sumOfValues_T_0, _S622[i32(0)] + _S622[i32(1)]); | |
| var _S624 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S624.primal_0 = _S258; | |
| _S624.differential_0 = _S393; | |
| var _S625 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S625.primal_0 = p_50; | |
| _S625.differential_0 = _S393; | |
| var _S626 : DiffPair_float_0; | |
| _S626.primal_0 = 1.64303183555603027f; | |
| _S626.differential_0 = 0.0f; | |
| var _S627 : DiffPair_float_0; | |
| _S627.primal_0 = _S261; | |
| _S627.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S624), &(_S625), &(_S626), &(_S627), _S623); | |
| var _S628 : vec2<f32> = _S621 + _S624.differential_0; | |
| var _S629 : vec2<f32> = p_49 * (_S256 * (vec2<f32>(0.37999999523162842f) * _S628)); | |
| var _S630 : vec2<f32> = vec2<f32>(_S255 * s_diff_sumOfValues_T_0, _S629[i32(0)] + _S629[i32(1)]); | |
| var _S631 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S631.primal_0 = _S254; | |
| _S631.differential_0 = _S393; | |
| var _S632 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S632.primal_0 = p_49; | |
| _S632.differential_0 = _S393; | |
| var _S633 : DiffPair_float_0; | |
| _S633.primal_0 = 1.39239990711212158f; | |
| _S633.differential_0 = 0.0f; | |
| var _S634 : DiffPair_float_0; | |
| _S634.primal_0 = _S257; | |
| _S634.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S631), &(_S632), &(_S633), &(_S634), _S630); | |
| var _S635 : vec2<f32> = _S628 + _S631.differential_0; | |
| var _S636 : vec2<f32> = p_48 * (_S252 * (vec2<f32>(0.37999999523162842f) * _S635)); | |
| var _S637 : vec2<f32> = vec2<f32>(_S251 * s_diff_sumOfValues_T_0, _S636[i32(0)] + _S636[i32(1)]); | |
| var _S638 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S638.primal_0 = _S250; | |
| _S638.differential_0 = _S393; | |
| var _S639 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S639.primal_0 = p_48; | |
| _S639.differential_0 = _S393; | |
| var _S640 : DiffPair_float_0; | |
| _S640.primal_0 = 1.1799999475479126f; | |
| _S640.differential_0 = 0.0f; | |
| var _S641 : DiffPair_float_0; | |
| _S641.primal_0 = _S253; | |
| _S641.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S638), &(_S639), &(_S640), &(_S641), _S637); | |
| var _S642 : vec2<f32> = _S635 + _S638.differential_0; | |
| var _S643 : vec2<f32> = p_47 * (vec2<f32>(0.37999999523162842f) * _S642); | |
| var _S644 : vec2<f32> = vec2<f32>(s_diff_sumOfValues_T_0, _S643[i32(0)] + _S643[i32(1)]); | |
| var _S645 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S645.primal_0 = (*dpposition_3).primal_0; | |
| _S645.differential_0 = _S393; | |
| var _S646 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S646.primal_0 = p_47; | |
| _S646.differential_0 = _S393; | |
| var _S647 : DiffPair_float_0; | |
| _S647.primal_0 = 1.0f; | |
| _S647.differential_0 = 0.0f; | |
| var _S648 : DiffPair_float_0; | |
| _S648.primal_0 = _S248; | |
| _S648.differential_0 = 0.0f; | |
| s_bwd_prop_wavedx_0(&(_S645), &(_S646), &(_S647), &(_S648), _S644); | |
| var _S649 : f32 = 0.10000000149011612f * (_S397.differential_0 + _S403.differential_0 + _S410.differential_0 + _S417.differential_0 + _S424.differential_0 + _S431.differential_0 + _S438.differential_0 + _S445.differential_0 + _S452.differential_0 + _S459.differential_0 + _S466.differential_0 + _S473.differential_0 + _S480.differential_0 + _S487.differential_0 + _S494.differential_0 + _S501.differential_0 + _S508.differential_0 + _S515.differential_0 + _S522.differential_0 + _S529.differential_0 + _S536.differential_0 + _S543.differential_0 + _S550.differential_0 + _S557.differential_0 + _S564.differential_0 + _S571.differential_0 + _S578.differential_0 + _S585.differential_0 + _S592.differential_0 + _S599.differential_0 + _S606.differential_0 + _S613.differential_0 + _S620.differential_0 + _S627.differential_0 + _S634.differential_0 + _S641.differential_0 + _S648.differential_0); | |
| var _S650 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| _S650.primal_0 = (*dpposition_3).primal_0; | |
| _S650.differential_0 = _S393; | |
| s_bwd_length_impl_0(&(_S650), _S649); | |
| var _S651 : vec2<f32> = _S642 + _S645.differential_0 + _S650.differential_0; | |
| (*dpposition_3).primal_0 = (*dpposition_3).primal_0; | |
| (*dpposition_3).differential_0 = _S651; | |
| return; | |
| } | |
| fn s_bwd_getwaves_0( _S652 : ptr<function, DiffPair_vectorx3Cfloatx2C2x3E_0>, _S653 : f32) | |
| { | |
| var _S654 : s_bwd_prop_getwaves_Intermediates_0; | |
| var _S655 : f32 = s_primal_ctx_getwaves_0((*_S652).primal_0, &(_S654)); | |
| s_bwd_prop_getwaves_0(&((*_S652)), _S653, _S654); | |
| return; | |
| } | |
| fn normal_1( pos_2 : vec2<f32>, e_0 : f32, depth_1 : f32) -> vec3<f32> | |
| { | |
| var _S656 : vec2<f32> = vec2<f32>(0.0f); | |
| var diffPos_0 : DiffPair_vectorx3Cfloatx2C2x3E_0; | |
| diffPos_0.primal_0 = pos_2; | |
| diffPos_0.differential_0 = _S656; | |
| s_bwd_getwaves_0(&(diffPos_0), 1.0f); | |
| return normalize(vec3<f32>(- diffPos_0.differential_0.x, 1.0f, - diffPos_0.differential_0.y)); | |
| } | |
| fn imageMain_0( dispatchThreadID_0 : vec2<u32>, screenSize_0 : vec2<i32>) -> vec4<f32> | |
| { | |
| var ray_0 : vec3<f32> = getRay_0(vec2<f32>(dispatchThreadID_0.xy), vec2<f32>(f32(screenSize_0.x), f32(screenSize_0.y))); | |
| if((ray_0.y) >= 0.0f) | |
| { | |
| return vec4<f32>(aces_tonemap_0((getAtmosphere_0(ray_0) + vec3<f32>(getSun_0(ray_0))) * vec3<f32>(2.0f)), 1.0f); | |
| } | |
| var origin_1 : vec3<f32> = vec3<f32>(globalParams_0.time_0 * 2.0f, 1.5f, 1.0f); | |
| const _S657 : vec3<f32> = vec3<f32>(0.0f, 1.0f, 0.0f); | |
| var dist_0 : f32 = raymarchwater_0(origin_1, origin_1 + ray_0 * vec3<f32>(intersectPlane_0(origin_1, ray_0, vec3<f32>(0.0f, 0.0f, 0.0f), _S657)), origin_1 + ray_0 * vec3<f32>(intersectPlane_0(origin_1, ray_0, vec3<f32>(0.0f, -1.0f, 0.0f), _S657)), 1.0f); | |
| var waterHitPos_0 : vec3<f32> = origin_1 + ray_0 * vec3<f32>(dist_0); | |
| var N_0 : vec3<f32> = mix(normal_1(waterHitPos_0.xz, 0.00999999977648258f, 1.0f), _S657, vec3<f32>((0.80000001192092896f * min(1.0f, sqrt(dist_0 * 0.00999999977648258f) * 1.10000002384185791f)))); | |
| var fresnel_0 : f32 = 0.03999999910593033f + 0.95999997854232788f * pow(1.0f - max(0.0f, dot((vec3<f32>(0) - N_0), ray_0)), 5.0f); | |
| var _S658 : vec3<f32> = normalize(reflect(ray_0, N_0)); | |
| var R_0 : vec3<f32> = _S658; | |
| R_0[i32(1)] = abs(_S658.y); | |
| return vec4<f32>(aces_tonemap_0((vec3<f32>(fresnel_0) * (getAtmosphere_0(R_0) + vec3<f32>(getSun_0(R_0))) + vec3<f32>(0.02930000051856041f, 0.0697999969124794f, 0.17170000076293945f) * vec3<f32>(0.10000000149011612f) * vec3<f32>((0.20000000298023224f + (waterHitPos_0.y + 1.0f)))) * vec3<f32>(2.0f)), 1.0f); | |
| } | |
| @compute | |
| @workgroup_size(16, 16, 1) | |
| fn imageMain(@builtin(global_invocation_id) dispatchThreadID_1 : vec3<u32>) | |
| { | |
| var width_0 : u32 = u32(0); | |
| var height_1 : u32 = u32(0); | |
| {var dim = textureDimensions((outputTexture_0));((width_0)) = dim.x;((height_1)) = dim.y;}; | |
| var _S659 : vec2<u32> = dispatchThreadID_1.xy; | |
| var color_1 : vec4<f32> = imageMain_0(_S659, vec2<i32>(i32(width_0), i32(height_1))); | |
| var _S660 : bool; | |
| if((dispatchThreadID_1.x) >= width_0) | |
| { | |
| _S660 = true; | |
| } | |
| else | |
| { | |
| _S660 = (dispatchThreadID_1.y) >= height_1; | |
| } | |
| if(_S660) | |
| { | |
| return; | |
| } | |
| textureStore((outputTexture_0), (_S659), (color_1)); | |
| return; | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment