CLEO Shader API - HLSL shaderleri CLEO komut dosyalarıyla yazın ve kullanmaya başlayın, başka bir şeye gerek yok.
CLEO Shader API, Shader
sınıfını temel alır . Arayüzü bu yöntemlere sahip: Load("FileName%v") Dosyadan shaderi (efekt) yükler ve shaderin tanıtıcısını döndürür Draw("Shader%h" "Technique%v" "Left%f" "Top%f" "Right% f" "Bottom%f") shaderin tekniğiyle düz çizer DrawHudElement("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f") shaderin tekniğiyle dik çizer HUD oluşturma tekniği SetFloat("Shader%h" "ParamName%v" "Value%f") Kayan nokta parametresini ayarlar SetInt("Shader%h" "ParamName%v" "Value%i") Tamsayı parametresini ayarlar SetBool("Shader %h" "ParamName%v" "Value%b") Boolean parametresini ayarlar SetVector("Shader%h" "ParamName%v" "X%f" "Y%f" "Z%f" "W%f") Vektör parametresini ayarlar SetMatrix("Shader%h" "ParamName%v" "Matrix%h") Matris parametresini ayarlar. İkinci parametre D3DMATRIX yapısını gösteren bir işaretçidir. SetTexture("Shader%h" "ParamName%v" "TextureName%v") Doku parametresini ayarlar. İkinci parametre ise LoadTexture() metodu ile yüklenen doku adıdır. SetRwTexture("Shader%h" "ParamName%v" "Texture%h") Doku parametresini ayarlar. İkinci parametre RwTexture nesnesine bir işaretçidir. LoadTexture("Name%v" "FileName%v") Dokuyu dosyadan yükler UnloadTexture("Name%v") Dokuyu kaldırır Özellikler Anlambilim Bazı varsayılan parametreleri CLEO betiğine aktarmadan kullanabilirsiniz. Anlambilimle işaretlenirler . CLEO Shader API'si şu anlambilimi destekler: Tür SemanticName Açıklama doku SCREEN_TEX çerçeve arabellek dokusu doku DEPTH_TEX z-buffer doku float3 SUN_CORONA_COL güneşin korona rengi float3 SUN_CORE_COL güneşin çekirdek rengi float3 SKY_TOP_COL float3 SKY_BOTTOM_COL float3 AMBIENT_COL float2 SUN_POSN güneş konumu (ekran alanı koordinatları) float SUN_SIZE float DAYNIGHT_STATE float WEATHER_FOGGYNESS float WEATHER_CLOUD_COVERAGE float WEATHER_RAIN float WEATHER_UNDER_WATERNESS int MULTISAMPLE_LEVELS Oyun menüsünde AA seviyesi bool NIGHT_VISION bool INFRARED_VISION bool HEAT_VISUALS Böyle bir parametre için bir değişken tanımlarken,
Ekran boyutu sabitlerini
Tam/yarım ekran efekti çizmek istiyorsanız aşağıdaki parametreyi kullanın:
SCREEN_BASE_X
SCREEN_BASE_Y
SCREEN_SIZE_X
SCREEN_SIZE_Y
SCREEN_HALF_X
SCREEN_HALF_Y
Basit bulanıklık shaderi:
Bu shader için cleo scriptleri:
CLEO Shader API, Shader
sınıfını temel alır . Arayüzü bu yöntemlere sahip: Load("FileName%v") Dosyadan shaderi (efekt) yükler ve shaderin tanıtıcısını döndürür Draw("Shader%h" "Technique%v" "Left%f" "Top%f" "Right% f" "Bottom%f") shaderin tekniğiyle düz çizer DrawHudElement("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f") shaderin tekniğiyle dik çizer HUD oluşturma tekniği SetFloat("Shader%h" "ParamName%v" "Value%f") Kayan nokta parametresini ayarlar SetInt("Shader%h" "ParamName%v" "Value%i") Tamsayı parametresini ayarlar SetBool("Shader %h" "ParamName%v" "Value%b") Boolean parametresini ayarlar SetVector("Shader%h" "ParamName%v" "X%f" "Y%f" "Z%f" "W%f") Vektör parametresini ayarlar SetMatrix("Shader%h" "ParamName%v" "Matrix%h") Matris parametresini ayarlar. İkinci parametre D3DMATRIX yapısını gösteren bir işaretçidir. SetTexture("Shader%h" "ParamName%v" "TextureName%v") Doku parametresini ayarlar. İkinci parametre ise LoadTexture() metodu ile yüklenen doku adıdır. SetRwTexture("Shader%h" "ParamName%v" "Texture%h") Doku parametresini ayarlar. İkinci parametre RwTexture nesnesine bir işaretçidir. LoadTexture("Name%v" "FileName%v") Dokuyu dosyadan yükler UnloadTexture("Name%v") Dokuyu kaldırır Özellikler Anlambilim Bazı varsayılan parametreleri CLEO betiğine aktarmadan kullanabilirsiniz. Anlambilimle işaretlenirler . CLEO Shader API'si şu anlambilimi destekler: Tür SemanticName Açıklama doku SCREEN_TEX çerçeve arabellek dokusu doku DEPTH_TEX z-buffer doku float3 SUN_CORONA_COL güneşin korona rengi float3 SUN_CORE_COL güneşin çekirdek rengi float3 SKY_TOP_COL float3 SKY_BOTTOM_COL float3 AMBIENT_COL float2 SUN_POSN güneş konumu (ekran alanı koordinatları) float SUN_SIZE float DAYNIGHT_STATE float WEATHER_FOGGYNESS float WEATHER_CLOUD_COVERAGE float WEATHER_RAIN float WEATHER_UNDER_WATERNESS int MULTISAMPLE_LEVELS Oyun menüsünde AA seviyesi bool NIGHT_VISION bool INFRARED_VISION bool HEAT_VISUALS Böyle bir parametre için bir değişken tanımlarken,
Kod:
shared float2 sunPosn : SUN_POSN ;
Tam/yarım ekran efekti çizmek istiyorsanız aşağıdaki parametreyi kullanın:
SCREEN_BASE_X
SCREEN_BASE_Y
SCREEN_SIZE_X
SCREEN_SIZE_Y
SCREEN_HALF_X
SCREEN_HALF_Y
Basit bulanıklık shaderi:
Kod:
shared texture screen : SCREEN_TEX;float dist; sampler2D screenSampler = sampler_state{ Texture = <screen>;}; float4 PS_screen(float2 tex: TEXCOORD0): COLOR{ float4 color; color = tex2D(screenSampler, tex); color += tex2D(screenSampler, tex + dist); color += tex2D(screenSampler, tex - dist); return color / 3;} technique ShowScreen{ pass P0 { PixelShader = compile ps_2_0 PS_screen(); }}[size=4]
Kod:
{$CLEO}{$I shaderApi} var 0@: shaderend if 0@ = shader.Load("CLEO\blur.txt")then while true wait 0 068D: get_camera_position_to 4@ 5@ 6@ 050A: 7@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ 7@ *= 0.0008 068D: get_camera_position_to 1@ 2@ 3@ 0@.SetFloat("dist", 7@) 0@.Draw("ShowScreen", SCREEN_BASE_X, SCREEN_BASE_Y, SCREEN_SIZE_X, SCREEN_SIZE_Y) endend0A93: end_custom_thread