//////////////////////////////////////////////////////////////////////////////////
// Shader Script 語法定義
//////////////////////////////////////////////////////////////////////////////////

結構定義


///一個材質定義Script

Shader Name
{

///Pass1
{
...每一圖層內容
}
///Pass2
{
...
}
...可以有很多層

}

 

Shader的內容

NoCollide //無碰撞
NoBlock //不擋住
NoDraw //不顯示
NoLight //關閉燈光
NoFog //關閉霧
NoCull //雙面顯示
Flat //平面效果
Ambient %f %f %f %f //周遭顏色
Diffuse %f %f %f %f //漫射顏色
Specular %f %f %f %f //反射顏色
Emission %f %f %f %f //散發顏色
Shininess %f //發光參數

 

ShaderPass內容


Alpha %s %f

Alpha的通過模式
%s Never,Less,Equal,LEqual,Greater, NotEqual,GEqual,Always
%f AlphaVal參數0-1的小數

Blend %src %des

透貼模式由src 和des讀參數調整不同的透貼效果
Zero,One,
SrcColor,InvSrcColor,OneMinusSrcColor,
SrcAlpha,InvSrcAlpha,OneMinusSrcAlpha,
DstAlpha,InvDstAlpha,OneMinusDstAlpha,
DstColor,InvDstColor,OneMinusDstColor,
SrcAlphaSaturate,SrcAlphaSaturate,
BothSrcAlpha,BothInvSrcAlpha,
BlendFactor,InvBlendFactor

例如
發亮 使用 Blend One One
Lightmap 使用 Blend DstColor Zero
Alpha透貼 使用 Blend SrcColor InvSrcAlpha

Cull %s

%s=Back,Front,No,Disable
顯示模型 只顯示前面 只顯示後面 顯示雙面

Depth %s

%s=Never,Less,Equal,LEqual,Greater,NotEqual,GEqual,Always
深度比較模式

DepthBias %f

%f=調整深度寫入位移值(含小數)
DepthTest %d
%d=true,false
深度測試開關

DepthWrite %bool

%bool=true,false
強制寫入深度

tcGen %s

%s=None,Reflect,Sphere,Environment,Eye
貼圖軸計算模式 反射 球狀 環境 ...

tcMod %s ... //%s=

動態貼圖軸程序
Scale %UScale %VScale //縮放
Rotate %Speed //旋轉
Scroll %USpeed %VSpeed //捲動
Stretch %Speed %UBase %VBase %UAmplitude %VAmplitude //動態拉扯
Transform %Speed %Amplitude %U %V //動態來回捲動
Turb %Base %Amplitude %UV %Speed %Scale
Camera %Scale

RGBGen %s ...

Identity //回復正常
Wave %Key %Base %Amplitude %Phase %Speed

//%Key
Sin 平順
Triangle 線性
Square 閃爍
Saw 線性-無
InvSaw
Noise 亂閃
Program 自訂閃爍時間 無-有-無

Vertex //頂點著色
Bump //凹凸
Toon //卡通

RGB %Color //設定顏色
Map %file //貼圖
LightMap %file //光跡貼圖
BumpMap %file //凹凸貼圖
SpecularMap %file //高亮度貼圖
Nearest %bool //貼圖粒子明顯化
Repeat %bool //重複貼圖軸
Mipmap %bool //建立即時減畫素模式(可提升效能,自動近距離貼大張,隋距離縮小圖片)
Compress %bool //建立壓縮模式(省記憶體畫質較差)

Animap %Time %file1 %file2 ...

多貼圖動態
%Time 時間(含小數 1秒換幾張)
%File 檔案(多張排列後面)

TexFilter %s

貼圖顆粒模式
%s=None,Point,Linear,Anisotropic, PyramidalQuad,Gauss

TexAddress %s

貼圖軸模式
%s=Warp,Mirror,Clamp,Border,MirrorOnce

BorderColor %color //邊界顏色

PolyMode %s

模型畫上模式 填滿 畫點 線框 等模式
%s=Fill,Point,Line

PointSize %f //點大小
LineWidth %f //線條粗細
FX %d //使用內定FX (目前無)
FXFile %file //使用DirectX FX 檔案
ZHL %file //使用來連接shader 檔案


FX 關鍵字定義

 

  • Matrix 矩陣
  • "World",
    "WorldView",
    "Projection",
    "View",
    "WorldInverse",
    "WorldInverseTranspose",
    "WorldViewInverse",
    "WorldViewInverseTranspose",
    "WorldViewProjection",
    "WorldViewProjectionInverse",
    "WorldViewProjectionInverseTranspose",
    "ViewProjection",
    "ViewInverse",
    "ViewInverseTranspose",
    "ViewProjectionInverse",
    "ViewProjectionInverseTranspose",
    "ProjectionInverse",
    "ProjectionInverseTranspose",
    "TextureMatrix",

  • Material

    "materialAmbient",
    "materialDiffuse",
    "materialSpecular",
    "materialEmission",
    "Shininess", //等於SpecularPower
    'SpecularPower',

  • Light

    "lightPos",
    "lightDirect",
    "lightColor", //Diffuse
    "lightDiffuse", //等於lightColor
    "lightAmbient",

  • Texture

    "Texture0",
    "Texture1",
    "Texture2",
    "Texture3",
    "Texture4",
    "Texture5",
    "Texture6",
    "Texture7",
    "Texture8",
    "Texture9",
    "NormalCube", (目前無)
    "EnvCube", (目前無)

  • Fog

    "FogStart",
    "FogEnd",
    "FogDensity",
    "FogColor",

  • SYSTEM
    "Time",

 

Technique 定義


只有一個technique時候直接使用
如果有3個technique 會自動切換多光源定義

1.Ambient (no light)
2.Ambient with One light
3.light with Blend One One (for multilight)

 

ZHL 檔案定義


//重新定義名稱 否則以檔案名稱

Name %name

//頂點類型
Vertex %key1 %key2 ...

//key 參數類型
Pos
Normal
Color //頂點顏色
Specular
TUV //貼圖座標
LMTUV //光跡貼圖座標軸
Tangent
BINormal

注意 目前有使用的Vertex有以下幾種
1.Pos Normal TUV
2.Pos Normal TUV LMTUV
3.Pos Normal TUV Tangent BINormal
4.Pos Normal TUV LMTUV Tangent BINormal

//設定常數
Set %name %f ...

//設定名稱 name 為 fx 中關鍵字定義
Alias %name %fxKey

//設定貼圖
Texture %name %filename

FX %file

貼圖管理員會把載入的貼圖建立一個索引表當下次載入相同檔名貼圖時
會判斷該貼圖是否有載入 避免重複載入相同貼圖

 

 

2007 Copyright by JhengYi, All rights reserved.