Untitled

Untitled

Material (머티리얼)이란 메시에 적용하여 씬의 시각적인 모양을 조절할 수 있는 애셋입니다. 넓게 보면, 머티리얼이란 오브젝트에 적용할 수 있는 "페인트"라 보면 됩니다. 하지만 그것도 약간 오해의 소지가 있는데, 머티리얼이란 말 그대로 오브젝트가 어떤 재질로 만들어졌는지를 정의하는 것이기 때문입니다. 그 색이나 광택, 투과성 등을 정의할 수 있습니다.

보다 기술적인 용어로 풀자면, 씬에서의 빛이 표면에 닿으면, 머티리얼을 사용하여 그 빛과 표면의 상호작용을 계산합니다. 이러한 계산은 여러가지 이미지(텍스처)에서 온 데이터를 수학 표현식과 아울러 머티리얼 자체에 상속된 여러가지 프로퍼티 세팅을 통해 이루어집니다.

#pragma once
#include "yaResource.h"
#include "yaTexture.h"
#include "yaShader.h"

namespace ya
{
	class Material : public Resource
	{
	public:
		struct Data
		{
			std::wstring albedo; //difuuse
		};

		Material();
		virtual ~Material();

		virtual HRESULT Save(const std::wstring& path) override;
		virtual HRESULT Load(const std::wstring& path) override;

		void Bind();

		void SetShader(graphics::Shader* shader) { mShader = shader; }

	private:
		graphics::eRenderingMode mMode;
		Material::Data mData;

		//Texture* mTexture;
		graphics::Shader* mShader;
	};
}

입력 어셈블러 스테이지(Input Assembler 이하 IA) 는 렌더링 파이프라인의 젤 처음 스테이지이자

어플리케이션으로부터 넘겨받은 버텍스 버퍼나 인덱스 버퍼의 데이터를 읽어들여 [점],[선],[삼각형]등의 프리미티브를

조합하여 파이프라인의 다음 스테이지로 데이터를 흘려보내는 역할을 한다

그 밖에 셰이더에서의 처리에 필요한 [ 시스템 생성값]을 추가할수도 있다

시스템 생성값 ]은 다른 입출력 Element와 마찬가지로 [ 시멘틱스]를 붙여 식별하며

입력어셈블러가 생성하는 시스템 생성값에는 [ 버텍스 ID ] [ 프리미티브ID ] [ 인스턴스 ID] 등이 있다.

아래는 입력 어셈블러 스테이지에서의 데이터들의 관계도를 나타낸 그림이다

Untitled

입력 레이아웃 오브젝트

DirectX의 버텍스 버퍼에는 어플리케이션측에서 임의의 정보를 기록할 수 있다

그때문에 [ 어떤 버텍스버퍼의 어느 데이터가 포함되어 있고, 셰이더에 어떤 식으로 넘길것인가 ] 를 IA에 알려줄 필요가 있다

이때문에 필요한것이 [ Input Layout ] 이다