Skip to content

[Merged by Bors] - Move import_path definitions into shader source - #3976

Closed
cart wants to merge 1 commit into
bevyengine:mainfrom
cart:import_paths
Closed

cart wants to merge 1 commit into
bevyengine:mainfrom
cart:import_paths

Conversation

@cart

@cart cart commented Feb 18, 2022

Copy link
Copy Markdown
Member

This enables shaders to (optionally) define their import path inside their source. This has a number of benefits:

  1. enables users to define their own custom paths directly in their assets
  2. moves the import path "close" to the asset instead of centralized in the plugin definition, which seems "better" to me.
  3. makes "internal hot shader reloading" way more reasonable (see [Merged by Bors] - Internal Asset Hot Reloading #3966)
  4. logically opens the door to importing "parts" of a shader by defining "import_path blocks".
#define_import_path bevy_pbr::mesh_struct

struct Mesh {
    model: mat4x4<f32>;
    inverse_transpose_model: mat4x4<f32>;
    // 'flags' is a bit field indicating various options. u32 is 32 bits so we have up to 32 options.
    flags: u32;
};

let MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 1u;

@cart cart added the A-Rendering Drawing game state to the screen label Feb 18, 2022
@github-actions github-actions Bot added the S-Needs-Triage This issue needs to be labelled label Feb 18, 2022
@cart cart removed the S-Needs-Triage This issue needs to be labelled label Feb 18, 2022
@cart

cart commented Feb 18, 2022

Copy link
Copy Markdown
Member Author

bors r+

bors Bot pushed a commit that referenced this pull request Feb 18, 2022
This enables shaders to (optionally) define their import path inside their source. This has a number of benefits:

1. enables users to define their own custom paths directly in their assets
2. moves the import path "close" to the asset instead of centralized in the plugin definition, which seems "better" to me. 
3. makes "internal hot shader reloading" way more reasonable (see #3966)
4. logically opens the door to importing "parts" of a shader by defining "import_path blocks".

```rust
#define_import_path bevy_pbr::mesh_struct

struct Mesh {
    model: mat4x4<f32>;
    inverse_transpose_model: mat4x4<f32>;
    // 'flags' is a bit field indicating various options. u32 is 32 bits so we have up to 32 options.
    flags: u32;
};

let MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 1u;
```
@bors bors Bot changed the title Move import_path definitions into shader source [Merged by Bors] - Move import_path definitions into shader source Feb 18, 2022
@bors bors Bot closed this Feb 18, 2022
molikto pushed a commit to molikto/bevy that referenced this pull request Feb 20, 2022
This enables shaders to (optionally) define their import path inside their source. This has a number of benefits:

1. enables users to define their own custom paths directly in their assets
2. moves the import path "close" to the asset instead of centralized in the plugin definition, which seems "better" to me. 
3. makes "internal hot shader reloading" way more reasonable (see bevyengine#3966)
4. logically opens the door to importing "parts" of a shader by defining "import_path blocks".

```rust
#define_import_path bevy_pbr::mesh_struct

struct Mesh {
    model: mat4x4<f32>;
    inverse_transpose_model: mat4x4<f32>;
    // 'flags' is a bit field indicating various options. u32 is 32 bits so we have up to 32 options.
    flags: u32;
};

let MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 1u;
```
kurtkuehnert pushed a commit to kurtkuehnert/bevy that referenced this pull request Mar 6, 2022
This enables shaders to (optionally) define their import path inside their source. This has a number of benefits:

1. enables users to define their own custom paths directly in their assets
2. moves the import path "close" to the asset instead of centralized in the plugin definition, which seems "better" to me. 
3. makes "internal hot shader reloading" way more reasonable (see bevyengine#3966)
4. logically opens the door to importing "parts" of a shader by defining "import_path blocks".

```rust
#define_import_path bevy_pbr::mesh_struct

struct Mesh {
    model: mat4x4<f32>;
    inverse_transpose_model: mat4x4<f32>;
    // 'flags' is a bit field indicating various options. u32 is 32 bits so we have up to 32 options.
    flags: u32;
};

let MESH_FLAGS_SHADOW_RECEIVER_BIT: u32 = 1u;
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Rendering Drawing game state to the screen

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants