| 127 | } |
| 128 | |
| 129 | void SDFEditor::bindShaderData(const ShaderVar& var, const ref<Texture>& pInputColor, const ref<Texture>& pVBuffer) |
| 130 | { |
| 131 | mGPUEditingData.editing = mEditingKeyDown; |
| 132 | mGPUEditingData.previewEnabled = mPreviewEnabled; |
| 133 | mGPUEditingData.instanceID = mCurrentEdit.instanceID; |
| 134 | mGPUEditingData.scalingAxis = uint32_t( |
| 135 | mPrimitiveTransformationEdit.state != TransformationState::Scaling ? SDFEditorAxis::Count : mPrimitiveTransformationEdit.axis |
| 136 | ); |
| 137 | mGPUEditingData.primitive = mCurrentEdit.primitive; |
| 138 | mGPUEditingData.primitiveBB = SDF3DPrimitiveFactory::computeAABB(mCurrentEdit.primitive); |
| 139 | mpSDFEditingDataBuffer->setBlob(&mGPUEditingData, 0, sizeof(SDFEditingData)); |
| 140 | |
| 141 | if (!mpGridInstanceIDsBuffer || mGridInstanceCount < mpScene->getSDFGridCount()) |
| 142 | { |
| 143 | mGridInstanceCount = mpScene->getSDFGridCount(); // This is safe because the SDF Editor only supports SDFGrid type of SBS for now. |
| 144 | std::vector<uint32_t> instanceIDs = mpScene->getGeometryInstanceIDsByType(Scene::GeometryType::SDFGrid); |
| 145 | mpGridInstanceIDsBuffer = mpDevice->createStructuredBuffer( |
| 146 | sizeof(uint32_t), |
| 147 | mGridInstanceCount, |
| 148 | ResourceBindFlags::ShaderResource | ResourceBindFlags::UnorderedAccess, |
| 149 | MemoryType::DeviceLocal, |
| 150 | instanceIDs.data(), |
| 151 | false |
| 152 | ); |
| 153 | } |
| 154 | |
| 155 | auto rootVar = mpGUIPass->getRootVar(); |
| 156 | |
| 157 | rootVar["gInputColor"] = pInputColor; |
| 158 | rootVar["gLinearZ"] = mpEditingLinearZBuffer; |
| 159 | rootVar["gVBuffer"] = pVBuffer; |
| 160 | mpScene->bindShaderData(rootVar["gScene"]); |
| 161 | |
| 162 | auto guiPassVar = rootVar["gGUIPass"]; |
| 163 | guiPassVar["resolution"] = mFrameDim; |
| 164 | guiPassVar["mousePos"] = uint2(mUI2D.currentMousePosition); |
| 165 | guiPassVar["pickingData"] = mpPickingInfo; |
| 166 | guiPassVar["editingPrimitiveData"].setBuffer(mpSDFEditingDataBuffer); |
| 167 | guiPassVar["gridInstanceIDs"] = mpGridInstanceIDsBuffer; |
| 168 | guiPassVar["bbRenderSettings"].setBlob(mUI2D.bbRenderSettings); |
| 169 | guiPassVar["gridInstanceCount"] = mGridInstanceCount; |
| 170 | guiPassVar["ui2DActive"] = uint(isMainGUIKeyDown()); |
| 171 | guiPassVar["gridPlane"].setBlob(mUI2D.gridPlane); |
| 172 | guiPassVar["symmetryPlane"].setBlob(mUI2D.symmetryPlane); |
| 173 | mUI2D.pMarker2DSet->bindShaderData(guiPassVar["markerSet"]); |
| 174 | } |
| 175 | |
| 176 | void SDFEditor::fetchPreviousVBufferAndZBuffer(RenderContext* pRenderContext, ref<Texture>& pVBuffer, ref<Texture>& pDepth) |
| 177 | { |
no test coverage detected