void PostProc::Draw(bool bindFB) { // assume write was just written const ShaderBlur *blurShader = m_blur ? &ShaderBlur::instance(m_blur) : NULL; if (m_blur) { glDisable(GL_BLEND); swapRW(); BindWriteFramebuffer(); blurShader->setDimension(1); getRead().DrawFullscreen(*blurShader); UnbindWriteFramebuffer(); swapRW(); BindWriteFramebuffer(); blurShader->setDimension(0); getRead().DrawFullscreen(*blurShader); UnbindWriteFramebuffer(); glEnable(GL_BLEND); } if (!bindFB) { getWrite().DrawFullscreen<ShaderTexture>(); } // nothing to do if bindFB and no blur }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const void* pNext) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType != VK_DESCRIPTOR_TYPE_MAX_ENUM); writeSet.pNext = pNext; return writeSet; }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const VkBufferView* pTexelBufferView) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER); writeSet.pTexelBufferView = pTexelBufferView; return writeSet; }
// length is the datagram data length void Configuration::processWrite(uint8_t* data, int length) { // will reply, mark as done. request = false; uint32_t address = getAddress(data); int space = decodeSpace(data); for (int i=0; i<length-6; i++) { getWrite(address+i, space, data[i+6]); } }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const VkWriteDescriptorSetInlineUniformBlockEXT* pInline) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType != VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT); writeSet.pNext = pInline; return writeSet; }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const VkWriteDescriptorSetAccelerationStructureNV* pAccel) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType != VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV); writeSet.pNext = pAccel; return writeSet; }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const VkDescriptorBufferInfo* pBufferInfo) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC); writeSet.pBufferInfo = pBufferInfo; return writeSet; }
VkWriteDescriptorSet DescriptorSetReflection::getWrite(VkDescriptorSet dstSet, uint32_t dstBinding, const VkDescriptorImageInfo* pImageInfo) const { VkWriteDescriptorSet writeSet = getWrite(dstSet, dstBinding); assert(writeSet.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE || writeSet.descriptorType == VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT); writeSet.pImageInfo = pImageInfo; return writeSet; }
void PostProc::UnbindWriteFramebuffer() { getWrite().UnbindFramebuffer(); }
void PostProc::BindWriteFramebuffer() { getWrite().BindFramebuffer(m_res); }