Coder Social home page Coder Social logo

Comments (1)

sotrh avatar sotrh commented on July 26, 2024 1

ModelVertex doesn't need padding because it's only used in a vertex buffer and you have to specify the VertexBufferLayout for those. This means that the vertex pipeline knows the exact offsets of the data you're trying to pass in.

Uniform layout is a special case and it does require padding. By default uniform blocks use the std140 alignment standard. You can read about alignment in the wgpu spec, and I have started a write up discussing in more detail.

From what I've read the reasoning this is performance. Rather than query the offsets for all the fields, the gpu simply expects fields to be at certain locations in memory. It takes whatever data is at that memory location and sends it to the shader. This means that if your struct is not padded correctly your shader will be pulling from the wrong parts of the struct. If ModelVertex were used as a uniform buffer position would overlap tex_coords in the shader meaning that tex_coords.x in the shader would map to tex_coords[1] in Rust.

from learn-wgpu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.