Flutter Impeller
impeller::scene::SkinnedVertexBufferGeometry Class Referencefinal

#include <geometry.h>

Inheritance diagram for impeller::scene::SkinnedVertexBufferGeometry:
impeller::scene::Geometry

Public Member Functions

 SkinnedVertexBufferGeometry ()
 
 ~SkinnedVertexBufferGeometry () override
 
void SetVertexBuffer (VertexBuffer vertex_buffer)
 
GeometryType GetGeometryType () const override
 
VertexBuffer GetVertexBuffer (Allocator &allocator) const override
 
void BindToCommand (const SceneContext &scene_context, HostBuffer &buffer, const Matrix &transform, RenderPass &pass) const override
 
void SetJointsTexture (const std::shared_ptr< Texture > &texture) override
 
- Public Member Functions inherited from impeller::scene::Geometry
virtual ~Geometry ()
 

Additional Inherited Members

- Static Public Member Functions inherited from impeller::scene::Geometry
static std::shared_ptr< CuboidGeometryMakeCuboid (Vector3 size)
 
static std::shared_ptr< GeometryMakeVertexBuffer (VertexBuffer vertex_buffer, bool is_skinned)
 
static std::shared_ptr< GeometryMakeFromFlatbuffer (const fb::MeshPrimitive &mesh, Allocator &allocator)
 

Detailed Description

Definition at line 111 of file geometry.h.

Constructor & Destructor Documentation

◆ SkinnedVertexBufferGeometry()

impeller::scene::SkinnedVertexBufferGeometry::SkinnedVertexBufferGeometry ( )
default

◆ ~SkinnedVertexBufferGeometry()

impeller::scene::SkinnedVertexBufferGeometry::~SkinnedVertexBufferGeometry ( )
overridedefault

Member Function Documentation

◆ BindToCommand()

void impeller::scene::SkinnedVertexBufferGeometry::BindToCommand ( const SceneContext scene_context,
HostBuffer buffer,
const Matrix transform,
RenderPass pass 
) const
overridevirtual

Implements impeller::scene::Geometry.

Definition at line 237 of file geometry.cc.

241  {
242  pass.SetVertexBuffer(
243  GetVertexBuffer(*scene_context.GetContext()->GetResourceAllocator()));
244 
245  SamplerDescriptor sampler_desc;
246  sampler_desc.min_filter = MinMagFilter::kNearest;
247  sampler_desc.mag_filter = MinMagFilter::kNearest;
248  sampler_desc.mip_filter = MipFilter::kNearest;
249  sampler_desc.width_address_mode = SamplerAddressMode::kRepeat;
250  sampler_desc.label = "NN Repeat";
251 
252  SkinnedVertexShader::BindJointsTexture(
253  pass,
254  joints_texture_ ? joints_texture_ : scene_context.GetPlaceholderTexture(),
255  scene_context.GetContext()->GetSamplerLibrary()->GetSampler(
256  sampler_desc));
257 
258  SkinnedVertexShader::FrameInfo info;
259  info.mvp = transform;
260  info.enable_skinning = joints_texture_ ? 1 : 0;
261  info.joint_texture_size =
262  joints_texture_ ? joints_texture_->GetSize().width : 1;
263  SkinnedVertexShader::BindFrameInfo(pass, buffer.EmplaceUniform(info));
264 }

References impeller::HostBuffer::EmplaceUniform(), impeller::scene::SceneContext::GetContext(), impeller::scene::SceneContext::GetPlaceholderTexture(), GetVertexBuffer(), impeller::kNearest, impeller::kRepeat, impeller::SamplerDescriptor::label, impeller::SamplerDescriptor::mag_filter, impeller::SamplerDescriptor::min_filter, impeller::SamplerDescriptor::mip_filter, impeller::RenderPass::SetVertexBuffer(), and impeller::SamplerDescriptor::width_address_mode.

◆ GetGeometryType()

GeometryType impeller::scene::SkinnedVertexBufferGeometry::GetGeometryType ( ) const
overridevirtual

Implements impeller::scene::Geometry.

Definition at line 226 of file geometry.cc.

226  {
227  return GeometryType::kSkinned;
228 }

References impeller::scene::kSkinned.

◆ GetVertexBuffer()

VertexBuffer impeller::scene::SkinnedVertexBufferGeometry::GetVertexBuffer ( Allocator allocator) const
overridevirtual

Implements impeller::scene::Geometry.

Definition at line 231 of file geometry.cc.

232  {
233  return vertex_buffer_;
234 }

Referenced by BindToCommand().

◆ SetJointsTexture()

void impeller::scene::SkinnedVertexBufferGeometry::SetJointsTexture ( const std::shared_ptr< Texture > &  texture)
overridevirtual

Reimplemented from impeller::scene::Geometry.

Definition at line 267 of file geometry.cc.

268  {
269  joints_texture_ = texture;
270 }

◆ SetVertexBuffer()

void impeller::scene::SkinnedVertexBufferGeometry::SetVertexBuffer ( VertexBuffer  vertex_buffer)

Definition at line 221 of file geometry.cc.

221  {
222  vertex_buffer_ = std::move(vertex_buffer);
223 }

The documentation for this class was generated from the following files:
impeller::MinMagFilter::kNearest
@ kNearest
Select nearest to the sample point. Most widely supported.
impeller::MipFilter::kNearest
@ kNearest
Sample from the nearest mip level.
impeller::scene::SkinnedVertexBufferGeometry::GetVertexBuffer
VertexBuffer GetVertexBuffer(Allocator &allocator) const override
Definition: geometry.cc:231
impeller::scene::GeometryType::kSkinned
@ kSkinned
impeller::SamplerAddressMode::kRepeat
@ kRepeat