본문으로 바로가기

2020_1110 Model Outline

category DX11 3D Game Programming 2020. 11. 10. 05:47

[소스코드]

drive.google.com/file/d/1lgCmV3CTkOW-_ML6MG0J61mgLXhGZ51O/view?usp=sharing



 

1. DepthStencilState

더보기
#pragma once

class DepthStencilState
{
public:
	enum Mode
	{
		OFF,
		WRITE,
		MASK
	};
	////////////////////////////////////
public:
	void SetMode(Mode mode);
};
////////////////////////////////////////////////////////////////////////
void DepthStencilState::SetMode(Mode mode)
{
	desc = CD3D11_DEPTH_STENCIL_DESC{ CD3D11_DEFAULT{} };
	//
	switch (mode)
	{
	case DepthStencilState::OFF:
		break;
	case DepthStencilState::WRITE:
	{
		desc.StencilEnable = TRUE;
		desc.StencilWriteMask = 0xFF;
		//
		desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
		desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_REPLACE;
	}
	break;
	case DepthStencilState::MASK:
	{
		desc.DepthEnable = FALSE;
		//
		desc.StencilEnable = TRUE;
		desc.StencilReadMask = 0xFF;
		//
		desc.FrontFace.StencilFunc = D3D11_COMPARISON_NOT_EQUAL;
		desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
	}
	break;
	}
	//
	Changed();
}

 

2. Render OutLine

더보기
<Xbot.h>
private:
	DepthStencilState* depthStencilState;
	float outlineScale;
///////////////////////////////////////////////////////////////////////////////////
<Xbot.cpp>
void Xbot::RenderOutLine()
{
	SetShader(L"OutLine");
	//
	scale *= outlineScale;
	//
	depthStencilState->SetMode(DepthStencilState::MASK);
	depthStencilState->SetState();
	Render();
	depthStencilState->SetMode(DepthStencilState::OFF);
	depthStencilState->SetState();
	//
	scale /= outlineScale;
	//
	SetShader(L"ModelAnimation");
}

 

3. RenderTarget Scene

더보기
void RenderTargetScene::PreRender()
{
	renderTarget->Set(depthStencil);
	//
	skyBox->Render();
	terrain->Render();
	//
	xbot->RenderOutLine();
	xbot->Render();
}

'DX11 3D Game Programming' 카테고리의 다른 글

2020_1116 MapTool ( Model Instancing )  (0) 2020.11.16
2020_1113 MapTool ( Light )  (0) 2020.11.13
2020_1109 Player & Monster  (0) 2020.11.09
2020_1105 Object Collision  (0) 2020.11.05
2020_1104 Model Collision  (0) 2020.11.04