struct InputAssemblyState
{
PrimitiveTopology topology {};
- bool primitiveRestartEnable { false };
+ bool primitiveRestartEnable { true };
Extension extension { nullptr };
InputAssemblyState& SetPrimitiveRestartEnable( bool value )
{
- primitiveRestartEnable = value;
+ primitiveRestartEnable = true;
return *this;
}
};
sgRenderer->WriteUniform("uMvpMatrix", mvp2);
sgRenderer->WriteUniform("uViewMatrix", *viewMatrix);
sgRenderer->WriteUniform("uModelView", item.mModelViewMatrix);
+
+ Matrix3 uNormalMatrix( item.mModelViewMatrix );
+ uNormalMatrix.Invert();
+ uNormalMatrix.Transpose();
+
+ sgRenderer->WriteUniform("uNormalMatrix", uNormalMatrix);
sgRenderer->WriteUniform("uProjection", vulkanProjectionMatrix);
sgRenderer->WriteUniform("uSize", item.mSize);
sgRenderer->WriteUniform("uColor", color );
switch (uniformMap->propertyPtr->GetType())
{
+
case Property::Type::FLOAT:
case Property::Type::INTEGER:
case Property::Type::BOOLEAN:
DALI_LOG_STREAM( gVulkanFilter, Debug::Verbose, uniformInfo.name << ":[" << uniformInfo.bufferIndex << "]: " << "Writing mat3 offset: "
<< uniformInfo.offset << ", size: " << sizeof(Matrix3) );
dst += sizeof(Matrix3) * arrayIndex;
- memcpy(dst, &uniformMap->propertyPtr->GetMatrix3(updateBufferIndex), sizeof(Matrix3));
+
+ auto& matrix = uniformMap->propertyPtr->GetMatrix3(updateBufferIndex);
+
+ float* values = reinterpret_cast<float*>(dst);
+ std::fill( values, values+12, 10.0f );
+ std::memcpy( &values[0], matrix.AsFloat(), sizeof(float)*3 );
+ std::memcpy( &values[4], &matrix.AsFloat()[3], sizeof(float)*3 );
+ std::memcpy( &values[8], &matrix.AsFloat()[6], sizeof(float)*3 );
+
+ memcpy(dst, values, sizeof(float)*12);
break;
}
default:
#include <dali/graphics-api/graphics-api-render-command.h>
#include <dali/graphics-api/graphics-api-pipeline.h>
#include <dali/graphics-api/graphics-api-controller.h>
+#include <cstring>
namespace Dali
{
WriteUniform( name, &data, sizeof(T) );
}
+ void WriteUniform( const std::string& name, const Matrix3& data )
+ {
+ // Matrix3 has to take stride in account ( 16 )
+ float values[12];
+ std::fill( values, values+12, 10.0f );
+
+ std::memcpy( &values[0], data.AsFloat(), sizeof(float)*3 );
+ std::memcpy( &values[4], &data.AsFloat()[3], sizeof(float)*3 );
+ std::memcpy( &values[8], &data.AsFloat()[6], sizeof(float)*3 );
+
+ WriteUniform( name, &values, sizeof(float)*12 );
+ }
+
void WriteUniform( const std::string& name, const void* data, uint32_t size );