Featured image of post 셰이더 프로그래밍 기본공부 2

셰이더 프로그래밍 기본공부 2

베이스맵 출력 연습.
아래는 구동 스크린샷.

float4x4 WorldViewProject : WORLDVIEWPROJECT ;

texture Basetexture : Diffusemap
<    string UIName = “Base”;
      int Texcoord = 0;
      int MapChannel = 1;

;

//텍스쳐를 생성합니다. 꺾음쇠를 주의하세요.
//성질 이름: 종류 
//식으로 된 구성에서는 < >; 가 붙습니다. 
// UIName과 Texcoord, MapChammel은 규약된 변수이므로 대소문자 주의
// 이것만 쓰고 세이브 해 보시면, base란 이름의 텍스쳐 넣는 칸이 생성됩니다. (UIName)
// 텍스쳐 좌표는 0로 하고, 맵체널은 일단 1로 합니다. 역시 이것도 조절자가 생성됩니다.

sampler2D Basesampler = sampler_state
{
    texture =  ;
    MinFilter = Linear;
    MagFilter = Linear;
    MipFilter = Linear;
 } ;

//이번엔 색을 캐치하는 [샘플러] 를 만들어 봅시다.
//sampler2D 는 대소문자 주의!
//텍스쳐는 위에 만든 베이스 텍스쳐를 쓰고,
//나머지는 필터링 항목들입니다. 일단 리니어로 쓰고 외웁시다.

void VS
(
    in float4 iPosition : Position,
    in float2 itexcoord : Texcoord0,
    out float4 oPosition : Position,
    out float2 otexcoord : Texcoord0
 )
//추가된것은 float2 짜리 텍스쳐 좌표입니다. 버텍스 쉐이더에서는 텍스쳐 좌표의 입출력이 주로 일어납니다.
// float2 인 이유는 XY 뿐이기 때문입니다. 텍스쳐는 2D니까요.
// 텍스쳐가 in 했다가 out 되고 있습니다.


    oPosition = mul ( iPosition, WORLDVIEWPROJECTION );
    otexcoord = itexcoord;
}

//텍스쳐가 out 되었을때의 공식이 추가되었습니다. 별 것 없습니다. 그냥 들어갔다가 나왔네요.

void PS
(
    in float2 itexcoord : Texcoord0,
    out float4 oColor : COLOR
)
//여기서 텍스쳐 코디네이트를 받아옵니다. Texcoord0 가 가장 중요한 부분입니다.
//여러개를 받아올 수 있는데, 이 번호로 구별하거든요.
//in 밖에 없는걸 주의하십시오. 버텍스 쉐이더에서 픽셀쉐이더로 사용하려고 입력만 받았을 뿐,
//픽셀쉐이더에서 출력하는건 없습니다.

{
 oColor =  tex2D(BaseSampler, itexcoord);
}

//베이스맵을 구하는 진짜 공식입니다. tex2D 대소문자 주의하세요.
//tex2D(베이스맵의샘플러, 베이스맵의 텍스쳐 코디네이트) 입니다.
//이제 베이스맵에 비트맵 이미지를 넣으면, 그대로 출력되게 됩니다.

technique JPCorp1
{
pass p0
    {
    VertexShader = compile vs_1_1 VS();
    PixelShader = compile ps_1_1 PS();
    }
}

Hugo로 만듦
JimmyStack 테마 사용 중