add default values, vec4 uniforms, and cvar uniforms to post-process uniforms
This commit is contained in:
parent
9073fb8501
commit
5938204fa9
7 changed files with 215 additions and 81 deletions
|
|
@ -965,6 +965,7 @@ PPCustomShaderInstance::PPCustomShaderInstance(PostProcessShader *desc) : Desc(d
|
|||
case PostProcessUniformType::Int: AddUniformField(offset, name, UniformType::Int, sizeof(int)); break;
|
||||
case PostProcessUniformType::Vec2: AddUniformField(offset, name, UniformType::Vec2, sizeof(float) * 2); break;
|
||||
case PostProcessUniformType::Vec3: AddUniformField(offset, name, UniformType::Vec3, sizeof(float) * 3, sizeof(float) * 4); break;
|
||||
case PostProcessUniformType::Vec4: AddUniformField(offset, name, UniformType::Vec4, sizeof(float) * 4); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1103,6 +1104,13 @@ void PPCustomShaderInstance::SetUniforms(PPRenderState *renderstate)
|
|||
fValues[2] = (float)pair->Value.Values[2];
|
||||
memcpy(dst, fValues, sizeof(float) * 3);
|
||||
break;
|
||||
case PostProcessUniformType::Vec4:
|
||||
fValues[0] = (float)pair->Value.Values[0];
|
||||
fValues[1] = (float)pair->Value.Values[1];
|
||||
fValues[2] = (float)pair->Value.Values[2];
|
||||
fValues[3] = (float)pair->Value.Values[3];
|
||||
memcpy(dst, fValues, sizeof(float) * 4);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,6 +116,31 @@ DEFINE_ACTION_FUNCTION(_PPShader, SetUniform3f)
|
|||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION(_PPShader, SetUniform4f)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_STRING(shaderName);
|
||||
PARAM_STRING(uniformName);
|
||||
PARAM_FLOAT(x);
|
||||
PARAM_FLOAT(y);
|
||||
PARAM_FLOAT(z);
|
||||
PARAM_FLOAT(w);
|
||||
|
||||
for (unsigned int i = 0; i < PostProcessShaders.Size(); i++)
|
||||
{
|
||||
PostProcessShader &shader = PostProcessShaders[i];
|
||||
if (shader.Name == shaderName)
|
||||
{
|
||||
double *vec4 = shader.Uniforms[uniformName].Values;
|
||||
vec4[0] = x;
|
||||
vec4[1] = y;
|
||||
vec4[2] = z;
|
||||
vec4[3] = w;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION(_PPShader, SetUniform1i)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ enum class PostProcessUniformType
|
|||
Int,
|
||||
Float,
|
||||
Vec2,
|
||||
Vec3
|
||||
Vec3,
|
||||
Vec4
|
||||
};
|
||||
|
||||
struct PostProcessUniformValue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue