summaryrefslogtreecommitdiff
path: root/client/src/scene_prepare.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-22 00:27:38 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-22 00:27:38 +0100
commitc682a1315adfa4e90d661d25e55df6e99a884d40 (patch)
tree96c2b1bb075ae7cea43f0588373af1af00936706 /client/src/scene_prepare.rs
parent0612ce58890741428f10c73a63bcb417dcd43a9f (diff)
downloadweareserver-c682a1315adfa4e90d661d25e55df6e99a884d40.tar
weareserver-c682a1315adfa4e90d661d25e55df6e99a884d40.tar.bz2
weareserver-c682a1315adfa4e90d661d25e55df6e99a884d40.tar.zst
move scene bgl to scene_prepare
Diffstat (limited to 'client/src/scene_prepare.rs')
-rw-r--r--client/src/scene_prepare.rs72
1 files changed, 66 insertions, 6 deletions
diff --git a/client/src/scene_prepare.rs b/client/src/scene_prepare.rs
index 4b298a1..e7d3403 100644
--- a/client/src/scene_prepare.rs
+++ b/client/src/scene_prepare.rs
@@ -18,7 +18,6 @@ use crate::{
armature::RArmature,
download::Downloader,
meshops::{generate_normals, generate_tangents, generate_texcoords},
- scene_render::SceneBgLayouts,
shaders::SceneShaders,
};
use anyhow::Result;
@@ -42,14 +41,16 @@ use weareshared::{
resources::{Image, MeshPart, Prefab},
};
use wgpu::{
- AddressMode, BindGroup, BindGroupDescriptor, BindGroupEntry, BindGroupLayout, BindingResource,
- BlendState, Buffer, BufferUsages, ColorTargetState, ColorWrites, CompareFunction,
+ AddressMode, BindGroup, BindGroupDescriptor, BindGroupEntry, BindGroupLayout,
+ BindGroupLayoutDescriptor, BindGroupLayoutEntry, BindingResource, BindingType, BlendState,
+ Buffer, BufferBindingType, BufferUsages, ColorTargetState, ColorWrites, CompareFunction,
DepthBiasState, DepthStencilState, Device, Extent3d, Face, FilterMode, FragmentState,
FrontFace, MultisampleState, PipelineCompilationOptions, PipelineLayoutDescriptor, PolygonMode,
PrimitiveState, PrimitiveTopology, PushConstantRange, Queue, RenderPipeline,
- RenderPipelineDescriptor, SamplerDescriptor, ShaderStages, StencilState, Texture,
- TextureDescriptor, TextureDimension, TextureFormat, TextureUsages, TextureViewDescriptor,
- VertexAttribute, VertexBufferLayout, VertexFormat, VertexState, VertexStepMode,
+ RenderPipelineDescriptor, SamplerBindingType, SamplerDescriptor, ShaderStages, StencilState,
+ Texture, TextureDescriptor, TextureDimension, TextureFormat, TextureSampleType, TextureUsages,
+ TextureViewDescriptor, TextureViewDimension, VertexAttribute, VertexBufferLayout, VertexFormat,
+ VertexState, VertexStepMode,
util::{BufferInitDescriptor, DeviceExt, TextureDataOrder},
};
@@ -618,6 +619,65 @@ fn create_texture(
(Arc::new(texture), Arc::new(bindgroup))
}
+pub struct SceneBgLayouts {
+ pub texture: BindGroupLayout,
+ pub material: BindGroupLayout,
+ pub joints: BindGroupLayout,
+}
+impl SceneBgLayouts {
+ pub fn load(device: &Device) -> Self {
+ Self {
+ texture: device.create_bind_group_layout(&BindGroupLayoutDescriptor {
+ entries: &[
+ BindGroupLayoutEntry {
+ binding: 0,
+ count: None,
+ visibility: ShaderStages::FRAGMENT,
+ ty: BindingType::Texture {
+ sample_type: TextureSampleType::Float { filterable: true },
+ view_dimension: TextureViewDimension::D2,
+ multisampled: false,
+ },
+ },
+ BindGroupLayoutEntry {
+ binding: 1,
+ count: None,
+ visibility: ShaderStages::FRAGMENT,
+ ty: BindingType::Sampler(SamplerBindingType::Filtering),
+ },
+ ],
+ label: None,
+ }),
+ material: device.create_bind_group_layout(&BindGroupLayoutDescriptor {
+ entries: &[BindGroupLayoutEntry {
+ binding: 0,
+ count: None,
+ visibility: ShaderStages::FRAGMENT,
+ ty: BindingType::Buffer {
+ ty: BufferBindingType::Uniform,
+ has_dynamic_offset: false,
+ min_binding_size: None,
+ },
+ }],
+ label: None,
+ }),
+ joints: device.create_bind_group_layout(&BindGroupLayoutDescriptor {
+ entries: &[BindGroupLayoutEntry {
+ binding: 0,
+ count: None,
+ visibility: ShaderStages::VERTEX,
+ ty: BindingType::Buffer {
+ ty: BufferBindingType::Uniform,
+ has_dynamic_offset: false,
+ min_binding_size: None,
+ },
+ }],
+ label: None,
+ }),
+ }
+ }
+}
+
impl PipelineConfig {
pub fn create(
&self,