[PICA] We can now upload floating point uniforms for real

This commit is contained in:
wheremyfoodat 2022-09-23 14:31:26 +03:00
parent 92b7ca3b8c
commit ce07b7e5e0
3 changed files with 7 additions and 6 deletions

View file

@ -129,10 +129,10 @@ public:
floatUniformWordCount = 0;
if (f32UniformTransfer) {
uniform.x() = f24::fromFloat32(*(float*)floatUniformBuffer[3]);
uniform.y() = f24::fromFloat32(*(float*)floatUniformBuffer[2]);
uniform.z() = f24::fromFloat32(*(float*)floatUniformBuffer[1]);
uniform.w() = f24::fromFloat32(*(float*)floatUniformBuffer[0]);
uniform.x() = f24::fromFloat32(*(float*)&floatUniformBuffer[3]);
uniform.y() = f24::fromFloat32(*(float*)&floatUniformBuffer[2]);
uniform.z() = f24::fromFloat32(*(float*)&floatUniformBuffer[1]);
uniform.w() = f24::fromFloat32(*(float*)&floatUniformBuffer[0]);
} else {
uniform.x() = f24::fromRaw(floatUniformBuffer[2] & 0xffffff);
uniform.y() = f24::fromRaw(((floatUniformBuffer[1] & 0xffff) << 8) | (floatUniformBuffer[2] >> 24));

View file

@ -85,8 +85,6 @@ void GPU::writeInternalReg(u32 index, u32 value, u32 mask) {
attr.z() = f24::fromRaw(((fixedAttrBuff[0] & 0xff) << 16) | (fixedAttrBuff[1] >> 16));
attr.w() = f24::fromRaw(fixedAttrBuff[0] >> 8);
printf("r: %f g: %f b: %f a: %f\n", (double)attr.r().toFloat32(), (double)attr.g().toFloat32(), (double)attr.b().toFloat32(), (double)attr.a().toFloat32());
fixedAttribIndex++;
}

View file

@ -17,6 +17,9 @@ void PICAShader::run() {
PICAShader::vec4f PICAShader::getSource(u32 source) {
if (source < 16)
return attributes[source];
else if (source >= 0x20 && source <= 0x7f)
return floatUniforms[source - 0x20];
Helpers::panic("[PICA] Unimplemented source value: %X", source);
}