Esempio n. 1
0
void VtkVisPipelineView::showImageToMeshConversionDialog()
{
	MeshFromRasterDialog* dlg = new MeshFromRasterDialog;
	connect(dlg, SIGNAL(setMeshParameters(QString, MeshLib::MeshElemType, MeshLib::UseIntensityAs)),
	        this, SLOT(constructMeshFromImage(QString, MeshLib::MeshElemType, MeshLib::UseIntensityAs)));
	dlg->exec();
}
Esempio n. 2
0
bool 
ShaderD3D11::renderMeshes (const Ibl::RenderRequest& inputRequest,
                           const std::set<const Ibl::Mesh*>      & meshes) const
{

    Ibl::CullMode cachedCullMode =
            _deviceInterface->cullMode();

    // Form a new request around the meshes request.
    Ibl::RenderRequest request = inputRequest;

    if (meshes.size() > 0)
    {
        for (auto it =
             meshes.begin(); it != meshes.end(); it++)
        {
            const Ibl::Mesh* mesh = (*it);
            request.mesh = (mesh);
            request.material = mesh->material();

            if (!mesh->visible())
                continue;

            if (mesh->material()->twoSided())
            {
                _deviceInterface->setCullMode (Ibl::CullNone);
            }

            if (const Ibl::GpuTechniqueD3D11* technique = 
                    dynamic_cast<const Ibl::GpuTechniqueD3D11*>(request.technique))
            {
                ID3DX11EffectTechnique* techniqueHandle = 
                    technique->handle();

                const D3DX11_TECHNIQUE_DESC& description =
                    technique->description();

               setTechniqueParameters (request);
               setMeshParameters (request);
               
                for (uint32_t passIndex = 0; passIndex < description.Passes; passIndex++)
                {
                    // Need to set input handle here
                    if (technique->setupInputLayout (mesh, passIndex))
                    {
                        techniqueHandle->GetPassByIndex (passIndex)->Apply(0, _immediateCtx);
                        mesh->render(&request, technique);
                    }
                }
            }

            if (mesh->material()->twoSided())
            {
                _deviceInterface->setCullMode (cachedCullMode);
            }
        }
    }
    return true;
}
Esempio n. 3
0
void MeshFromRasterDialog::accept()
{
	UseIntensityAs::type i_type(UseIntensityAs::ELEVATION);
	if (this->materialButton->isChecked()) i_type = UseIntensityAs::MATERIAL;
	else if (this->ignoreButton->isChecked()) i_type = UseIntensityAs::NONE;

	MshElemType::type e_type(MshElemType::TRIANGLE);
	if (this->quadButton->isChecked()) e_type = MshElemType::QUAD;
	else if (this->hexButton->isChecked()) e_type = MshElemType::HEXAHEDRON;

	emit setMeshParameters(this->mshNameEdit->text(), e_type, i_type);
	this->done(QDialog::Accepted);
}
Esempio n. 4
0
bool
ShaderD3D11::renderInstancedBuffer (const Ibl::RenderRequest& request,
                               const Ibl::IGpuBuffer* instanceBuffer)  const
{
    if (const Ibl::BufferD3D11* resource = 
        dynamic_cast<const Ibl::BufferD3D11*>(instanceBuffer))
    {
        if (const Ibl::GpuTechniqueD3D11* technique = 
            dynamic_cast<const Ibl::GpuTechniqueD3D11*>(request.technique))
        {
            const D3DX11_TECHNIQUE_DESC& description =
                    technique->description();

            ID3DX11EffectTechnique* techniqueHandle = 
                technique->handle();

            setTechniqueParameters (request);
            setMeshParameters (request);

            for (uint32_t passIndex = 0; passIndex < description.Passes; passIndex++)
            {
                techniqueHandle->GetPassByIndex (passIndex)->Apply(0, _immediateCtx);

                ID3D11Buffer* vertexBuffers[2] = { nullptr , nullptr};
                UINT strides[2] = { 0, 0 };
                UINT offsets[2] = { 0, 0 };
                _immediateCtx->IASetIndexBuffer(nullptr, DXGI_FORMAT_UNKNOWN, 0);
                _immediateCtx->IASetVertexBuffers(0, 2, vertexBuffers, strides, offsets);
                _immediateCtx->IASetInputLayout(nullptr);
                // TODO: Topology as input
                _immediateCtx->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_POINTLIST); 

                _immediateCtx->DrawInstancedIndirect(resource->buffer(), 0);
            }
        }
    }

    return true;
}