diff options
Diffstat (limited to 'src/effects')
| -rw-r--r-- | src/effects/scene1_effect.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/effects/scene1_effect.cc b/src/effects/scene1_effect.cc index da2797c..71e25a4 100644 --- a/src/effects/scene1_effect.cc +++ b/src/effects/scene1_effect.cc @@ -7,11 +7,13 @@ #include "util/fatal_error.h" #include "util/mini_math.h" -static CameraParams make_scene1_camera() { +static CameraParams make_scene1_camera(float time) { const float TAU = 6.283185307f; - const vec3 ro(0.0f, 2.5f, 5.0f); + const float R = 6.0f; + const vec3 ro(R * sin(time * .43), 2.5f, R * cos(time * .43)); const vec3 la(0.0f, 0.0f, 0.0f); const vec3 up(0.1f, 1.0f, 0.0f); + CameraParams cam; cam.inv_view = mat4::look_at(ro, la, up).inverse(); cam.fov = TAU / 6.0f; // full vfov=60°; tan(fov/2)=tan(PI/6)=1/sqrt(3)=1/shader_fov @@ -31,7 +33,7 @@ Scene1::Scene1(const GpuContext& ctx, const std::vector<std::string>& inputs, create_dummy_scene_texture(); camera_params_.init(ctx_.device); - camera_params_.update(ctx_.queue, make_scene1_camera()); + camera_params_.update(ctx_.queue, make_scene1_camera(start_time)); pipeline_.set(create_post_process_pipeline( ctx_.device, WGPUTextureFormat_RGBA8Unorm, scene1_shader_wgsl)); @@ -40,6 +42,8 @@ Scene1::Scene1(const GpuContext& ctx, const std::vector<std::string>& inputs, void Scene1::render(WGPUCommandEncoder encoder, const UniformsSequenceParams& params, NodeRegistry& nodes) { + + camera_params_.update(ctx_.queue, make_scene1_camera(params.time)); WGPUTextureView output_view = nodes.get_view(output_nodes_[0]); pp_update_bind_group(ctx_.device, pipeline_.get(), bind_group_.get_address(), |
