Initial support for compute
* minimal backend support for compute - added api to dispatch a compute shader - added api to create and bind a ssbo - added api to read back a buffer Only implemented in the gl backend * Add a backend compute test suite * basic support for compute shaders in matc this is still very much work-in-progress. We're not supporting images nor ssbo for now. * rename UniformInterfaceBlock to BufferInterfaceBlock * augment BufferInterfaceBlock to support ssbo features - add support for std430 - add support for ssbo - add support for variable-size array - add support for memory qualifiers * reformat MaterialBuilder * material format: move subpasses outside of parameters subpasses now are their own json property instead of being a "parameter". * refactor parameter() methods to match Buffer/SamplerInterfaceBlock We're just shuffling the arguments. * add support for buffers in .mat files * filamat now generates buffer blocks (ssbo) * take feature level into consideration when optimizing shaders * don't store the 'uniform binding' chunk for level 2 materials this includes some refactoring/cleanups of MaterialParser * matinfo: fixes for compute - separate subpasses from parameters - don't attempt to print material properties
This commit is contained in:
@@ -289,7 +289,8 @@ static void setup(Engine* engine, View*, Scene* scene) {
|
||||
shader += "}\n";
|
||||
|
||||
MaterialBuilder::init();
|
||||
MaterialBuilder builder = MaterialBuilder()
|
||||
MaterialBuilder builder;
|
||||
builder
|
||||
.name("DefaultMaterial")
|
||||
.targetApi(MaterialBuilder::TargetApi::ALL)
|
||||
#ifndef NDEBUG
|
||||
@@ -301,20 +302,20 @@ static void setup(Engine* engine, View*, Scene* scene) {
|
||||
|
||||
if (hasNormalMap) {
|
||||
builder
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter(MaterialBuilder::SamplerType::SAMPLER_2D, "normalMap");
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter("normalMap", MaterialBuilder::SamplerType::SAMPLER_2D);
|
||||
}
|
||||
|
||||
if (hasClearCoatNormalMap) {
|
||||
builder
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter(MaterialBuilder::SamplerType::SAMPLER_2D, "clearCoatNormalMap");
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter("clearCoatNormalMap", MaterialBuilder::SamplerType::SAMPLER_2D);
|
||||
}
|
||||
|
||||
if (hasBaseColorMap) {
|
||||
builder
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter(MaterialBuilder::SamplerType::SAMPLER_2D, "baseColorMap");
|
||||
.require(VertexAttribute::UV0)
|
||||
.parameter("baseColorMap", MaterialBuilder::SamplerType::SAMPLER_2D);
|
||||
}
|
||||
|
||||
Package pkg = builder.build(engine->getJobSystem());
|
||||
|
||||
Reference in New Issue
Block a user