Пример #1
0
	void D3D11RenderTarget::clearColor(const vec4f& clearColor)
	{
		auto &context = m_graphics->getContext();
		for (unsigned int i = 0; i < getNumTargets(); i++) {
			context.ClearRenderTargetView(m_targetsRTV[i], clearColor.array);
		}
	}
Пример #2
0
	void D3D11RenderTarget::clear(const vec4f& clearColor, float clearDepth)
	{
		auto &context = m_graphics->getContext();
		for (unsigned int i = 0; i < getNumTargets(); i++) {
			context.ClearRenderTargetView(m_targetsRTV[i], clearColor.array);
		}
		context.ClearDepthStencilView(m_depthStencilDSV, D3D11_CLEAR_DEPTH, clearDepth, 0);
	}
Пример #3
0
//_________________________________________________________________________________________________
void SwitchInst::verify() const 
{
    Inst::verify();
#ifdef _DEBUG
    for (U_32 i=0, n = getNumTargets(); i<n; ++i) {
        Node* target = getTarget(i);
        assert(target!=NULL && target->isBlockNode());
        assert(node->isConnectedTo(true, target));
    }
#endif
}
Пример #4
0
	void D3D11RenderTarget::releaseGPU() {
		
		for (unsigned int i = 0; i < getNumTargets(); i++) {
			if (m_targets)		SAFE_RELEASE(m_targets[i]);
			if (m_targetsRTV)	SAFE_RELEASE(m_targetsRTV[i]);
			if (hasSRVs() && m_targetsSRV)	SAFE_RELEASE(m_targetsSRV[i]);
		}

		SAFE_DELETE_ARRAY(m_targets);
		SAFE_DELETE_ARRAY(m_targetsRTV);
		SAFE_DELETE_ARRAY(m_targetsSRV);

		SAFE_RELEASE(m_depthStencil);
		SAFE_RELEASE(m_depthStencilDSV);
		if (hasSRVs()) SAFE_RELEASE(m_depthStencilSRV);

		for (unsigned int i = 0; i < getNumTargets(); i++) {
			if (m_captureTextures) SAFE_RELEASE(m_captureTextures[i]);
		}
		SAFE_DELETE_ARRAY(m_captureTextures);

		SAFE_RELEASE(m_captureDepth);
	}
Пример #5
0
	void D3D11RenderTarget::bind()
	{
		MLIB_ASSERT(m_targets != nullptr);


		auto &context = m_graphics->getContext();
		context.OMSetRenderTargets(getNumTargets(), m_targetsRTV, m_depthStencilDSV);

		D3D11_VIEWPORT viewport;
		viewport.Width = (FLOAT)m_width;
		viewport.Height = (FLOAT)m_height;
		viewport.MinDepth = 0.0f;
		viewport.MaxDepth = 1.0f;
		viewport.TopLeftX = 0;
		viewport.TopLeftY = 0;
		context.RSSetViewports(1, &viewport);
	}
Пример #6
0
//_________________________________________________________________________________________________
Edge::Kind SwitchInst::getEdgeKind(const Edge* edge) const 
{
#ifdef _DEBUG
    Node* target = edge->getTargetNode();
    assert(target->isBlockNode());
    bool found = false;
    for (U_32 i =0 ; i < getNumTargets(); i++) {
        Node* myTarget = getTarget(i);
        if (myTarget == target) {
            found = true;
            break;
        }
   }
    assert(found);
#endif
    return Edge::Kind_Unconditional;
}
void ActionIce2Spell::onCastLogic()
{
	myCastTime++;
	if (myCastTime > 40)
	{
		if (myTargetIndex >= 0)
		{
			Character* t = getTarget(myTargetIndex);
			t->damage(rand() % 100 + 30, Character::Damage_Ice);
		}

		myTargetIndex++;
		if (myTargetIndex == getNumTargets())
		{
			return;
		}
		myCastTime = 0;

		Character* t = getTarget(myTargetIndex);
		Ice2Effect* i = new Ice2Effect(t->getCenterX(), t->getCenterY(), t->getZOrder() + 0.01f);
		getBattle()->addEntity(i);
	}
}
Пример #8
0
	void D3D11RenderTarget::createGPU() {
		releaseGPU();

		if (m_width == 0 || m_height == 0) return;

		auto &device = m_graphics->getDevice();
		auto &context = m_graphics->getContext();

		//
		// Create the render target
		//
		m_targets = new ID3D11Texture2D*[getNumTargets()];
		m_targetsRTV = new ID3D11RenderTargetView*[getNumTargets()];
		if (hasSRVs())	m_targetsSRV = new ID3D11ShaderResourceView*[getNumTargets()];
		m_captureTextures = new ID3D11Texture2D*[getNumTargets()];

		for (unsigned int i = 0; i < getNumTargets(); i++) {
			D3D11_TEXTURE2D_DESC renderDesc;
			renderDesc.Width = m_width;
			renderDesc.Height = m_height;
			renderDesc.MipLevels = 1;
			renderDesc.ArraySize = 1;
			//renderDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
			renderDesc.Format = m_textureFormats[i];
			renderDesc.SampleDesc.Count = 1;
			renderDesc.SampleDesc.Quality = 0;
			renderDesc.Usage = D3D11_USAGE_DEFAULT;
			renderDesc.BindFlags = D3D11_BIND_RENDER_TARGET;
			if (hasSRVs()) renderDesc.BindFlags |= D3D11_BIND_SHADER_RESOURCE;
			renderDesc.CPUAccessFlags = 0;
			renderDesc.MiscFlags = 0;

			D3D_VALIDATE(device.CreateTexture2D(&renderDesc, nullptr, &m_targets[i]));				// create the texture
			D3D_VALIDATE(device.CreateRenderTargetView(m_targets[i], nullptr, &m_targetsRTV[i]));	// create the render target view
			if (hasSRVs())	D3D_VALIDATE(device.CreateShaderResourceView(m_targets[i], nullptr, &m_targetsSRV[i]));	// create the shader resource view


			// Create the color capture buffer
			renderDesc.BindFlags = 0;
			renderDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
			renderDesc.Usage = D3D11_USAGE_STAGING;
			D3D_VALIDATE(device.CreateTexture2D(&renderDesc, nullptr, &m_captureTextures[i]));
		}

		// Create the depth buffer
		D3D11_TEXTURE2D_DESC depthDesc;
		depthDesc.Width = m_width;
		depthDesc.Height = m_height;
		depthDesc.MipLevels = 1;
		depthDesc.ArraySize = 1;
		//depthDesc.Format = DXGI_FORMAT_D32_FLOAT;	//we just assume the depth buffer to always have 32 bit
		depthDesc.Format = DXGI_FORMAT_R32_TYPELESS;
		depthDesc.SampleDesc.Count = 1;
		depthDesc.SampleDesc.Quality = 0;
		depthDesc.Usage = D3D11_USAGE_DEFAULT;
		depthDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
		if (hasSRVs()) depthDesc.BindFlags |= D3D11_BIND_SHADER_RESOURCE;
		depthDesc.CPUAccessFlags = 0;
		depthDesc.MiscFlags = 0;
		D3D_VALIDATE(device.CreateTexture2D(&depthDesc, nullptr, &m_depthStencil));

		// Create the depth view
		D3D11_DEPTH_STENCIL_VIEW_DESC depthViewDSVDesc;
		depthViewDSVDesc.Flags = 0;
		depthViewDSVDesc.Format = DXGI_FORMAT_D32_FLOAT;
		depthViewDSVDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
		depthViewDSVDesc.Texture2D.MipSlice = 0;
		D3D_VALIDATE(device.CreateDepthStencilView(m_depthStencil, &depthViewDSVDesc, &m_depthStencilDSV));

		// Create the shader resource view
		D3D11_SHADER_RESOURCE_VIEW_DESC depthViewSRVDesc;
		depthViewSRVDesc.Format = DXGI_FORMAT_R32_FLOAT;
		depthViewSRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
		depthViewSRVDesc.Texture2D.MipLevels = 1;
		depthViewSRVDesc.Texture2D.MostDetailedMip = 0;
		if (hasSRVs())	D3D_VALIDATE(device.CreateShaderResourceView(m_depthStencil, &depthViewSRVDesc, &m_depthStencilSRV));	// create the shader resource view


		// Create the depth capture buffer
		depthDesc.BindFlags = 0;
		depthDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
		depthDesc.Usage = D3D11_USAGE_STAGING;
		D3D_VALIDATE(device.CreateTexture2D(&depthDesc, nullptr, &m_captureDepth));
	}
bool ActionIce2Spell::isCastDone()
{
	return myTargetIndex == getNumTargets();
}