스테이트
이펙트 스테이트는, 정점 처리나 픽셀 처리의 준비작업으로서 파이프라인 스테이트의 초기화에 사용된다.
effect state [ [index] ] = expression
여기서
- effect states - 종래의 고정 기능 파이프라인 스테이트와 유사하다. 다음에, 전스테이트의 일람을 나타낸다.
- [ [index] ] - 옵션의 정수 인덱스. 이 인덱스는, 이펙트 스테이트 배열내의 특정의 스테이트를 식별한다. 외측의 외모는, 인덱스가 옵션인 것을 나타낸다. 인덱스를 사용하는 경우는, 안쪽의 외모를 반드시 사용해야 한다.
- expression - 스테이트의 할당식. 「식」을 참조할것.
이펙트 스테이트는 다음의 카테고리로 분류된다.
조명 스테이트
이펙트를 적용 할 때의 퍼포먼스를 최대한으로 높이려면 , 이펙트 파일로, 라이트 또는 머트리얼의 모든 성분을 지정한다. Microsoft® Direct3D® 는 개별적으로 조명 스테이트를 설정할 수 없기 때문에, 선언에 실패한 스테이트에는 디폴트값이 설정된다.
머트리얼 스테이트
Direct3D 는 개별적으로 머트리얼 스테이트를 설정할 수 없기 때문에, 선언에 실패한 스테이트에는 디폴트값이 설정된다.
머트리얼 스테이트 | 형 | 값 |
---|
MaterialAmbient | float4 | Ambient 와 같은 값. |
MaterialDiffuse | float4 | Diffuse 와 같은 값. |
MaterialEmissive | float4 | Emissive 와 같은 값. |
MaterialPower | float | Power 와 같은 값. |
MaterialSpecular | float4 | Specular 와 같은 값. |
렌더링 스테이트
렌더링 스테이트에는 다음의 것이 있다.
정점 파이프라인 렌더링 스테이트
이펙트 파일의 렌더링 스테이트는, 고정 기능 파이프라인 스테이트와 이름이 비슷하지만, 프레픽스가 붙지 않는 것이 있다.
픽셀 파이프라인 렌더링 스테이트
이펙트 파일의 렌더링 스테이트는, 고정 기능 파이프라인 스테이트와 이름이 비슷하지만, 프레픽스가 붙지 않는 것이 있다.
렌더링 스테이트 | 형 | 값 |
---|
AlphaBlendEnable | bool | True 또는 False. D3DRENDERSTATETYPE 의 D3DRS_ALPHABLENDENABLE 와 같은 값. |
AlphaFunc | dword | D3DCMP_ 프레픽스가 붙지 않는,D3DCMPFUNC 와 같은 값. 「D3DRS_ALPHAFUNC 」를 참조할것. |
AlphaRef | dword | D3DRS_ALPHAREF 와 같은 값. |
AlphaTestEnable | dword | True 또는 False. 「D3DRS_ALPHATESTENABLE 」를 참조할것. |
BlendOp | dword | D3DBLENDOP_ 프레픽스가 붙지 않는,D3DBLENDOP 와 같은 값. |
ColorWriteEnable | dword | RED|GREEN|BLUE|ALPHA 의 비트의 편성. 「D3DRS_COLORWRITEENABLE 」를 참조할것. |
DepthBias | int | D3DRS_DEPTHBIAS 와 같은 값. |
DestBlend | dword | D3DBLEND_ 프레픽스가 붙지 않는,D3DBLEND 와 같은 값. |
DitherEnable | bool | True 또는 False. D3DRS_DITHERENABLE 와 같은 값. |
FillMode | dword | D3DFILL_ 프레픽스가 붙지 않는,D3DFILLMODE 와 같은 값. |
LastPixel | dword | True 또는 False. 「D3DRS_LASTPIXEL 」를 참조할것. |
ShadeMode | dword | D3DSHADE_ 프레픽스가 붙지 않는,D3DSHADEMODE 와 같은 값. |
SrcBlend | dword | D3DBLEND_ 프레픽스가 붙지 않는,D3DBLEND 와 같은 값. |
StencilEnable | bool | True 또는 False. D3DRS_STENCILENABLE 와 같은 값. |
StencilFail | dword | D3DSTENCILCAP_ 프레픽스가 붙지 않는,D3DSTENCILCAPS 와 같은 값. 「D3DRS_STENCILFAIL 」를 참조할것. |
StencilFunc | dword | D3DCMP_ 프레픽스가 붙지 않는,D3DCMPFUNC 와 같은 값. 「D3DRS_STENCILFUNC 」를 참조할것. |
StencilMask | dword | D3DRS_STENCILMASK 와 같은 값. |
StencilPass | dword | D3DSTENCILCAP_ 프레픽스가 붙지 않는,D3DSTENCILCAPS 와 같은 값. 「D3DRS_STENCILPASS 」를 참조할것. |
StencilRef | int | D3DRS_STENCILREF 와 같은 값. |
StencilWriteMask | dword | D3DRS_STENCILWRITEMASK 와 같은 값. |
StencilZFail | dword | D3DSTENCILCAP_ 프레픽스가 붙지 않는,D3DSTENCILCAPS 와 같은 값. 「D3DRS_STENCILZFAIL 」를 참조할것. |
TextureFactor | dword | D3DCOLOR 와 같은 값. D3DRS_TEXTUREFACTOR 와 같은 값. |
Wrap0 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRENDERSTATETYPE 의 D3DRS_WRAP0 와 같은 값. |
Wrap1 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP1 와 같은 값. |
Wrap2 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP2 와 같은 값. |
Wrap3 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP3 와 같은 값. |
Wrap4 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP4 와 같은 값. |
Wrap5 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP5 와 같은 값. |
Wrap6 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP6 와 같은 값. |
Wrap7 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP7 와 같은 값. |
Wrap8 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRENDERSTATETYPE 의 D3DRS_WRAP0 와 같은 값. |
Wrap9 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP1 와 같은 값. |
Wrap10 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP2 와 같은 값. |
Wrap11 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP3 와 같은 값. |
Wrap12 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP4 와 같은 값. |
Wrap13 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP5 와 같은 값. |
Wrap14 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP6 와 같은 값. |
Wrap15 | dword | D3DDRS_ 프레픽스가 붙지 않는,D3DRS_WRAP7 와 같은 값. |
ZEnable | dword | D3DZB_ 프레픽스가 붙지 않는,D3DZBUFFERTYPE 와 같은 값. |
ZFunc | dword | D3DCMP_ 프레픽스가 붙지 않는,D3DCMPFUNC 와 같은 값. 「D3DRS_ZFUNC 」를 참조할것. |
ZWriteEnable | bool | True 또는 False. 「D3DRS_ZWRITEENABLE 」를 참조할것. |
샘플러 스테이트
스테이트 | 형 | 값 |
---|
Sampler | sampler | NULL, 또는 샘플러 스테이트 블록. |
샘플러 스테이지 스테이트
샘플러 스테이트 | 형 | 값 |
---|
AddressU[16] | dword | D3DTEXF_ 프레픽스가 붙지 않는,D3DTEXTUREFILTERTYPE 와 같은 값. 「D3DSAMP_ADDRESSU 」를 참조할것. |
AddressV[16] | dword | D3DTEXF_ 프레픽스가 붙지 않는,D3DTEXTUREFILTERTYPE 와 같은 값. 「D3DSAMP_ADDRESSV 」를 참조할것. |
AddressW[16] | dword | D3DTEXF_ 프레픽스가 붙지 않는,D3DTEXTUREFILTERTYPE 와 같은 값. 「D3DSAMP_ADDRESSW 」를 참조할것. |
BorderColor[16] | float4 | D3DCOLORVALUE . D3DTEXF_ 프레픽스가 붙지 않는,D3DTEXTUREFILTERTYPE 와 같은 값. 「D3DSAMP_BORDERCOLOR 」를 참조할것. |
MagFilter[16] | dword | D3DTEXF_ 프레픽스가 붙지 않는,D3DTEXTUREFILTERTYPE 와 같은 값. 「D3DSAMP_MAGFILTER 」를 참조할것. |
MaxAnisotropy[16] | dword | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_MAXANISOTROPY 와 같은 값. |
MaxMipLevel[16] | int | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_MAXMIPLEVEL 와 같은 값. |
MinFilter[16] | dword | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_MINFILTER 와 같은 값. |
MipFilter[16] | dword | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_MIPFILTER 와 같은 값. |
MipMapLodBias[16] | float | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_MIPMAPLODBIAS 와 같은 값. |
SRGBTexture | float | D3DSAMP_ 프레픽스가 붙지 않는,D3DSAMP_SRGBTEXTURE 와 같은 값. |
셰이더 스테이트
셰이더 스테이트에는 다음의 것이 있다.
픽셀 셰이더 스테이트
스테이트 | 형 | 값 |
---|
PixelShader | pixelshader | NULL, 어셈블리 블록, 컴파일 타겟, 또는 픽셀 셰이더 파라미터. |
정점 셰이더 스테이트
스테이트 | 형 | 값 |
---|
VertexShader | vertexshader | NULL, 어셈블리 블록, 컴파일 타겟, 또는 픽셀 셰이더 파라미터. |
셰이더 정수 스테이트
셰이더 정수 스테이트에는 다음의 것이 있다.
픽셀 셰이더 정수 스테이트
스테이트 | 형 | 값 |
---|
PixelShaderConstant | float[m[n]] | float 의 m × n 배열. m 및 n 는 옵션. |
PixelShaderConstant1 | float4 | 1 개의 4D float. |
PixelShaderConstant2 | float4x2 | 2 개의 4D float. |
PixelShaderConstant3 | float4x3 | 3 개의 4D float. |
PixelShaderConstant4 | float4x4 | 4 개의 4D float. |
PixelShaderConstantB | bool[m[n]] | bool 의 m × n 배열. m 및 n 는 옵션. |
PixelShaderConstantI | int[m[n]] | int 의 m × n 배열. m 및 n 는 옵션. |
PixelShaderConstantF | float[m[n]] | float 의 m × n 배열. m 및 n 는 옵션. |
정점 셰이더 정수 스테이트
스테이트 | 형 | 값 |
---|
VertexShaderConstant | float[m[n]] | float 의 m × n 배열. m 및 n 는 옵션. |
VertexShaderConstant1 | float4 | 1 개의 4D float. |
VertexShaderConstant2 | float4x2 | 2 개의 4D float. |
VertexShaderConstant3 | float4x3 | 3 개의 4D float. |
VertexShaderConstant4 | float4x4 | 4 개의 4D float. |
VertexShaderConstantB | bool[m[n]] | bool 의 m × n 배열. m 및 n 는 옵션. |
VertexShaderConstantI | int[m[n]] | int 의 m × n 배열. m 및 n 는 옵션. |
VertexShaderConstantF | float[m[n]] | float 의 m × n 배열. m 및 n 는 옵션. |
텍스처 스테이트
텍스처 스테이트 | 형 | 값 |
---|
Texture[8] | texture | NULL, 또는 텍스처 파라미터. |
텍스처 스테이지 스테이트
형 | 텍스처 스테이지 스테이트 | 값 |
---|
AlphaOp[8] | dword | D3DTOP_ 프레픽스가 붙지 않는,D3DTEXTUREOP 와 같은 값. 「D3DTSS_ALPHAOP 」를 참조할것. |
AlphaArg0[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_ALPHAARG0 」를 참조할것. |
AlphaArg1[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_ALPHAARG1 」를 참조할것. |
AlphaArg2[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_ALPHAARG2 」를 참조할것. |
ColorArg0[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_COLORARG0 」를 참조할것. |
ColorArg1[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_COLORARG1 」를 참조할것. |
ColorArg2[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_COLORARG2 」를 참조할것. |
ColorOp[8] | dword | D3DTOP_ 프레픽스가 붙지 않는,D3DTEXTUREOP 와 같은 값. 「D3DTSS_COLOROP 」를 참조할것. |
BumpEnvLScale[8] | float | D3DTSS_TCI 프레픽스가 붙지 않는,D3DTSS_BUMPENVLSCALE 와 같은 값. |
BumpEnvLOffset[8] | float | D3DTSS_TCI 프레픽스가 붙지 않는,D3DTSS_BUMPENVLOFFSET 와 같은 값. |
BumpEnvMat00[8] | float | D3DTSS_BUMPENVMAT00 와 같은 값. |
BumpEnvMat01[8] | float | D3DTSS_BUMPENVMAT01 와 같은 값. |
BumpEnvMat10[8] | float | D3DTSS_BUMPENVMAT10 와 같은 값. |
BumpEnvMat11[8] | float | D3DTSS_BUMPENVMAT11 와 같은 값. |
ResultArg[8] | dword | D3DTA_ 프레픽스가 붙지 않는,D3DTA 와 같은 값. 「D3DTSS_RESULTARG 」를 참조할것. |
TexCoordIndex[8] | dword | D3DTSS_TCI 프레픽스가 붙지 않는,D3DTSS_TEXCOORDINDEX 와 같은 값. |
TextureTransformFlags[8] | dword | D3DTTFF_ 프레픽스가 붙지 않는,D3DTEXTURETRANSFORMFLAGS 와 같은 값. 「D3DTSS_TEXTURETRANSFORMFLAGS 」를 참조할것. |
변환 스테이트
이펙트는, 효율적으로 처리를 실시하기 위해서(때문에) 전치행렬을 사용한다. 이펙트에 대해서 전치행렬을 지정하는 일도, 행렬을 사용하기 전에 이펙트에 의해 자동적으로 행렬을 전치 할 수도 있다.
스테이트 | 형 | 값 |
---|
ProjectionTransform | float4x4 | float 의 4 × 4 행렬. D3DTS_ 프레픽스가 붙지 않는,D3DTS_PROJECTION 와 같은 값. |
TextureTransform[8] | float4x4 | float 의 4 × 4 행렬. D3DTS_ 프레픽스가 붙지 않는,D3DTRANSFORMSTATETYPE 와 같은 값. |
ViewTransform | float4x4 | float 의 4 × 4 행렬. D3DTS_ 프레픽스가 붙지 않는,D3DTS_VIEW 와 같은 값. |
WorldTransform | float4x4 | float 의 4 × 4 행렬. |