Lot more Metal changes
This commit is contained in:
@@ -22,9 +22,9 @@ Material::Material() {}
|
||||
|
||||
Material::Material(Gfx::PGraphics graphics, uint32 numTextures, uint32 numSamplers, uint32 numFloats, bool twoSided, float opacity,
|
||||
std::string materialName, Array<OShaderExpression> expressions, Array<std::string> parameter, MaterialNode brdf)
|
||||
: graphics(graphics), numTextures(numTextures), numSamplers(numSamplers), numFloats(numFloats), twoSided(twoSided), opacity(opacity),
|
||||
instanceId(0), materialName(materialName), codeExpressions(std::move(expressions)), parameters(std::move(parameter)),
|
||||
brdf(std::move(brdf)), materialId(materialIdCounter++) {
|
||||
: graphics(graphics), numTextures(numTextures), numSamplers(numSamplers), numFloats(numFloats), instanceId(0), materialId(materialIdCounter++),
|
||||
materialName(materialName), twoSided(twoSided), opacity(opacity), codeExpressions(std::move(expressions)),
|
||||
parameters(std::move(parameter)), brdf(std::move(brdf)) {
|
||||
if (layout == nullptr) {
|
||||
init(graphics);
|
||||
}
|
||||
@@ -38,14 +38,14 @@ void Material::init(Gfx::PGraphics graphics) {
|
||||
layout->addDescriptorBinding(Gfx::DescriptorBinding{
|
||||
.binding = 0,
|
||||
.descriptorType = Gfx::SE_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
||||
.descriptorCount = 2000,
|
||||
.descriptorCount = 512,
|
||||
.bindingFlags = Gfx::SE_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
|
||||
.shaderStages = Gfx::SE_SHADER_STAGE_FRAGMENT_BIT | Gfx::SE_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
|
||||
});
|
||||
layout->addDescriptorBinding(Gfx::DescriptorBinding{
|
||||
.binding = 1,
|
||||
.descriptorType = Gfx::SE_DESCRIPTOR_TYPE_SAMPLER,
|
||||
.descriptorCount = 2000,
|
||||
.descriptorCount = 512,
|
||||
.bindingFlags = Gfx::SE_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
|
||||
.shaderStages = Gfx::SE_SHADER_STAGE_FRAGMENT_BIT | Gfx::SE_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
|
||||
});
|
||||
@@ -101,12 +101,14 @@ void Material::updateFloatData(uint32 offset, uint32 numFloats, float* data) {
|
||||
uint32 Material::addTextures(uint32 numTextures) {
|
||||
uint32 textureOffset = textures.size();
|
||||
textures.resize(textures.size() + numTextures);
|
||||
assert(textures.size() < 512);
|
||||
return textureOffset;
|
||||
}
|
||||
|
||||
uint32 Material::addSamplers(uint32 numSamplers) {
|
||||
uint32 samplerOffset = samplers.size();
|
||||
samplers.resize(samplers.size() + numSamplers);
|
||||
assert(textures.size() < 512);
|
||||
return samplerOffset;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ struct ShaderParameter : public ShaderExpression {
|
||||
virtual uint64 getIdentifier() const override = 0;
|
||||
virtual uint64 getCPUSize() const override = 0;
|
||||
virtual uint64 getGPUSize() const override = 0;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const = 0;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override = 0;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -68,8 +68,8 @@ struct FloatParameter : public ShaderParameter {
|
||||
virtual void updateDescriptorSet(uint32 textureOffset, uint32 samplerOffset, uint32 floatOffset) override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual uint64 getIdentifier() const override { return IDENTIFIER; }
|
||||
virtual uint64 getCPUSize() const { return sizeof(FloatParameter); }
|
||||
virtual uint64 getGPUSize() const { return sizeof(float); }
|
||||
virtual uint64 getCPUSize() const override { return sizeof(FloatParameter); }
|
||||
virtual uint64 getGPUSize() const override { return sizeof(float); }
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -83,8 +83,8 @@ struct VectorParameter : public ShaderParameter {
|
||||
virtual void updateDescriptorSet(uint32 textureOffset, uint32 samplerOffset, uint32 floatOffset) override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual uint64 getIdentifier() const override { return IDENTIFIER; }
|
||||
virtual uint64 getCPUSize() const { return sizeof(VectorParameter); }
|
||||
virtual uint64 getGPUSize() const { return sizeof(Vector); }
|
||||
virtual uint64 getCPUSize() const override { return sizeof(VectorParameter); }
|
||||
virtual uint64 getGPUSize() const override { return sizeof(Vector); }
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -98,8 +98,8 @@ struct TextureParameter : public ShaderParameter {
|
||||
virtual void updateDescriptorSet(uint32 textureOffset, uint32 samplerOffset, uint32 floatOffset) override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual uint64 getIdentifier() const override { return IDENTIFIER; }
|
||||
virtual uint64 getCPUSize() const { return sizeof(TextureParameter); }
|
||||
virtual uint64 getGPUSize() const { return sizeof(void*); } // TODO: technically this is just a ref, but idk
|
||||
virtual uint64 getCPUSize() const override { return sizeof(TextureParameter); }
|
||||
virtual uint64 getGPUSize() const override { return sizeof(void*); } // TODO: technically this is just a ref, but idk
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -114,8 +114,8 @@ struct SamplerParameter : public ShaderParameter {
|
||||
virtual void updateDescriptorSet(uint32 textureOffset, uint32 samplerOffset, uint32 floatOffset) override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual uint64 getIdentifier() const override { return IDENTIFIER; }
|
||||
virtual uint64 getCPUSize() const { return sizeof(SamplerParameter); }
|
||||
virtual uint64 getGPUSize() const { return sizeof(void*); }
|
||||
virtual uint64 getCPUSize() const override { return sizeof(SamplerParameter); }
|
||||
virtual uint64 getGPUSize() const override { return sizeof(void*); }
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -130,8 +130,8 @@ struct CombinedTextureParameter : public ShaderParameter {
|
||||
virtual void updateDescriptorSet(uint32 textureOffset, uint32 samplerOffset, uint32 floatOffset) override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual uint64 getIdentifier() const override { return IDENTIFIER; }
|
||||
virtual uint64 getCPUSize() const { return sizeof(CombinedTextureParameter); }
|
||||
virtual uint64 getGPUSize() const { return sizeof(void*); }
|
||||
virtual uint64 getCPUSize() const override { return sizeof(CombinedTextureParameter); }
|
||||
virtual uint64 getGPUSize() const override { return sizeof(void*); }
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user