View Issue Details

IDProjectCategoryView StatusLast Update
0000175Gorilla3DFeature Requestpublic2021-08-26 11:16
Reporteradministrator Assigned Toadministrator  
PriorityhighSeverityfeatureReproducibilityalways
Status resolvedResolutionfixed 
Product Version0.8.3.x 
Target Version0.8.3.xFixed in Version0.8.3.x 
Summary0000175: Feature: Support for mulitple UniformBufferObjects (UBO) inside a single material
DescriptionWe do now support multiple uniform buffer objects (UBO) besides the default "ShaderData" structure.
Those are not longer managed as single global ubo, but instead inside of the shader program.

You can now create your own packed record structure (in std140 compatible format) and register it as UBO
Steps To Reproduceoverride the protected DoUpdateShaderUniformBuffers() function:

type
  // fields are aligned in 16 bytes
  TMyParams = packed record
    FieldA : Single;
    Reserve : Array[0..2] of Single; // alignment

    VectorA : TVector3D;
    MatrixA : TMatrix3D;
    PointA : TPoint3D;
    Reserve2: Single;
  end;

procedure TMyMaterial.DoUpdateShaderUniformBuffers(const Context: TContext3D;
  AProgram : TShaderProgram);
begin
  if not Assigned(AProgram) then
    Exit;

  inherited;

  AProgram.RegisterUniformBuffer('MyParams', @FMyParams, SizeOf(FMyParams));
end;
TagsNo tags attached.
Delphi-Version 10.4.2
OpenGLVersionOpenGL 4.3

Activities

administrator

2021-08-26 11:16

administrator   ~0000191

Implemented

Issue History

Date Modified Username Field Change
2021-08-26 11:15 administrator New Issue
2021-08-26 11:15 administrator Status new => assigned
2021-08-26 11:15 administrator Assigned To => administrator
2021-08-26 11:16 administrator Status assigned => resolved
2021-08-26 11:16 administrator Resolution open => fixed
2021-08-26 11:16 administrator Fixed in Version => 0.8.3.x
2021-08-26 11:16 administrator Note Added: 0000191