Bevy: Error when compiling projection in bevy_render

Created on 3 Sep 2020  路  5Comments  路  Source: bevyengine/bevy

So I was experimenting with bevy and got an error when trying to compile code below:

use bevy::prelude::*; 

fn main() {
    App::build()
        .add_default_plugins()
        .add_startup_system(setup.system())
        .run();
}

fn setup(mut commands: Commands, mut materials: ResMut<Assets<ColorMaterial>>) {
    commands
        .spawn(Camera2dComponents::default())
        .spawn(SpriteComponents {
            material: materials.add(Color::rgb(0.0, 0.0, 0.0).into()),
            translation: Translation::new(0.0, 0.0, 0.0),
            sprite: Sprite {
                size: Vec2::new(100.0, 100.0),
            },
            ..Default::default()
        });
}

The error:

error[E0599]: no function or associated item named `perspective_rh` found for struct `bevy_math::Mat4` in the current scope
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_render-0.1.3\src\camera\projection.rs:22:15
   |
22 |         Mat4::perspective_rh(self.fov, self.aspect_ratio, self.near, self.far)
   |               ^^^^^^^^^^^^^^
   |               |
   |               function or associated item not found in `bevy_math::Mat4`
   |               help: there is an associated function with a similar name: `perspective_lh`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use bevy_math::PerspectiveRh;`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0599`.
error: could not compile `bevy_render`.

when I checked the definition of Mat4, there is perspective_rh_gl method instead of perspective_rh and I thought it was a typo so I try to fix but ends up with more errors instead.

Is this a bug or something obvious that I just missed?

question

Most helpful comment

@TheNeikos THANKS A LOT! Running cargo update and removing the registry folder (just in case) solved the issue.

All 5 comments

A bit hidden in the error message it tells you:

   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use bevy_math::PerspectiveRh;`

Have you tried useing that trait?

I actually did that first but unfortunately didn't work, here's the output:

error[E0063]: missing field `clamp_depth` in initializer of `bevy_render::pipeline::RasterizationStateDescriptor`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_pbr-0.1.0\src\render_graph\forward_pipeline\mod.rs:17:35
   |
17 |         rasterization_state: Some(RasterizationStateDescriptor {
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `clamp_depth`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_front`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_pbr-0.1.0\src\render_graph\forward_pipeline\mod.rs:28:13
   |
28 |             stencil_front: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_back`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_pbr-0.1.0\src\render_graph\forward_pipeline\mod.rs:29:13
   |
29 |             stencil_back: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_read_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_pbr-0.1.0\src\render_graph\forward_pipeline\mod.rs:30:13
   |
30 |             stencil_read_mask: 0,
   |             ^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_write_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_pbr-0.1.0\src\render_graph\forward_pipeline\mod.rs:31:13
   |
31 |             stencil_write_mask: 0,
   |             ^^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error: aborting due to 5 previous errors

Some errors have detailed explanations: E0063, E0560.
For more information about an error, try `rustc --explain E0063`.
error[E0063]: missing field `clamp_depth` in initializer of `bevy_render::pipeline::RasterizationStateDescriptor`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:23:35
   |
23 |         rasterization_state: Some(RasterizationStateDescriptor {
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `clamp_depth`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_front`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:34:13
   |
34 |             stencil_front: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_back`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:35:13
   |
35 |             stencil_back: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_read_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:36:13
   |
36 |             stencil_read_mask: 0,
   |             ^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_write_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:37:13
   |
37 |             stencil_write_mask: 0,
   |             ^^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0063]: missing field `clamp_depth` in initializer of `bevy_render::pipeline::RasterizationStateDescriptor`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:68:35
   |
68 |         rasterization_state: Some(RasterizationStateDescriptor {
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `clamp_depth`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_front`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:79:13
   |
79 |             stencil_front: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_back`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:80:13
   |
80 |             stencil_back: StencilStateFaceDescriptor::IGNORE,
   |             ^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_read_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:81:13
   |
81 |             stencil_read_mask: 0,
   |             ^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0560]: struct `bevy_render::pipeline::DepthStencilStateDescriptor` has no field named `stencil_write_mask`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_sprite-0.1.0\src\render\mod.rs:82:13
   |
82 |             stencil_write_mask: 0,
   |             ^^^^^^^^^^^^^^^^^^ `bevy_render::pipeline::DepthStencilStateDescriptor` does not have this field
   |
   = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error: could not compile `bevy_pbr`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: aborting due to 10 previous errors

Some errors have detailed explanations: E0063, E0560.
For more information about an error, try `rustc --explain E0063`.
error[E0609]: no field `binding` on type `&bevy_render::renderer::IndexedBindGroupEntry`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\renderer\wgpu_render_resource_context.rs:452:64
    |
452 |                     let wgpu_resource = match &indexed_binding.binding {
    |                                                                ^^^^^^^ unknown field
    |
    = note: available fields are: `index`, `entry`

error[E0026]: variant `bevy_render::pipeline::BindType::Uniform` does not have a field named `properties`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:185:17
    |
185 |                 properties: _properties,
    |                 ^^^^^^^^^^
    |                 |
    |                 variant `bevy_render::pipeline::BindType::Uniform` does not have this field
    |                 help: a field with a similar name exists: `property`

error[E0609]: no field `stencil_back` on type `&bevy_render::pipeline::DepthStencilStateDescriptor`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:338:33
    |
338 |             stencil_back: (&val.stencil_back).wgpu_into(),
    |                                 ^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0609]: no field `stencil_front` on type `&bevy_render::pipeline::DepthStencilStateDescriptor`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:339:34
    |
339 |             stencil_front: (&val.stencil_front).wgpu_into(),
    |                                  ^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0609]: no field `stencil_read_mask` on type `&bevy_render::pipeline::DepthStencilStateDescriptor`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:340:36
    |
340 |             stencil_read_mask: val.stencil_read_mask,
    |                                    ^^^^^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0609]: no field `stencil_write_mask` on type `&bevy_render::pipeline::DepthStencilStateDescriptor`
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:341:37
    |
341 |             stencil_write_mask: val.stencil_write_mask,
    |                                     ^^^^^^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `format`, `depth_write_enabled`, `depth_compare`, `stencil`

error[E0308]: mismatched types
   --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_wgpu-0.1.0\src\wgpu_type_converter.rs:535:31
    |
535 |             anisotropy_clamp: sampler_descriptor.anisotropy_clamp.clone(),
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u8`, found struct `std::num::NonZeroU8`
    |
    = note: expected enum `std::option::Option<u8>`
               found enum `std::option::Option<std::num::NonZeroU8>`

error: aborting due to 7 previous errors

Some errors have detailed explanations: E0026, E0308, E0609.
For more information about an error, try `rustc --explain E0026`.
error: build failed

bevy_pbr-0.1.0

It seems that you are using an older version, can you verify that you are using the latest bevy version by running cargo update or if you have it installed cargo outdated in your crate root?

@TheNeikos THANKS A LOT! Running cargo update and removing the registry folder (just in case) solved the issue.

Good to hear that solved it! Happy developing :smile:

Was this page helpful?
0 / 5 - 0 ratings