CLEO Shader API - пишите и используйте HLSL шрейдеры при помощи Клео скриптов.
CLEO Shader API базируется на классе Shader. Его интерфейс имеет следующие методы:
Load("FileName%v")
Загружает шрейдер(эффект) с файла и возращает его хендл.
Draw("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f")
Рисует прямоугольник с указанным шрейдером.
DrawHudElement("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f")
Рисует прямоугольник с указанным шрейдером на худ рендеринге.
SetFloat("Shader%h" "ParamName%v" "Value%f")
Устанавнивает дробный параметр.
SetInt("Shader%h" "ParamName%v" "Value%i")
Устанавливает целосный параметр.
SetBool("Shader%h" "ParamName%v" "Value%b")
Устанавливает булевой параметр.
SetVector("Shader%h" "ParamName%v" "X%f" "Y%f" "Z%f" "W%f")
Устанавливает векторный параметр.
SetMatrix("Shader%h" "ParamName%v" "Matrix%h")
Устанавливает матричный параметр. Второй параметр - это поинтер на D3DMATRIX структуру.
SetTexture("Shader%h" "ParamName%v" "TextureName%v")
Устанавливает параметр текстуры. Второй параметр - это имя загруженной текстуры при помощи метода LoadTexture().
SetRwTexture("Shader%h" "ParamName%v" "Texture%h")
Устанавливает параметр текстуры. Второй параметр - это поинтер на обьект RwTexture.
LoadTexture("Name%v" "FileName%v")
Загружает текстуру с файла.
UnloadTexture("Name%v")
Выгружает текстуру из памяти.
Особенности
Семантика:
Вы можете использовать некоторые параметры по умолчанию, без передачи их в CLEO скрипты. Они отмечены как семантики. CLEO Shader API поддерживает такую семантику:
Тип Имя синтематика Описание
texture SCREEN_TEX frame buffer texture
texture DEPTH_TEX z-buffer texture
float3 SUN_CORONA_COL sun's corona color
float3 SUN_CORE_COL sun's core color
float3 SKY_TOP_COL
float3 SKY_BOTTOM_COL
float3 AMBIENT_COL
float2 SUN_POSN sun position (screen-space coordinates)
float SUN_SIZE
float DAYNIGHT_STATE
float WEATHER_FOGGYNESS
float WEATHER_CLOUD_COVERAGE
float WEATHER_RAIN
float WEATHER_UNDER_WATERNESS
int MULTISAMPLE_LEVELS AA level in game menu
bool NIGHT_VISION
bool INFRARED_VISION
bool HEAT_VISUALS
При определении переменной для такого параметра, хранятся в общем спецификаторе:
Константы размера экрана
Используйте следующий параметр, если вы хотите привлечь полный / эффекта половина экрана:
SCREEN_BASE_X
SCREEN_BASE_Y
SCREEN_SIZE_X
SCREEN_SIZE_Y
SCREEN_HALF_X
SCREEN_HALF_Y
Пример
Блюр шрейдер
Cleo-скрипт для этого шрейдера
Скачать
Ссылка на тему gtaforums.com
CLEO Shader API базируется на классе Shader. Его интерфейс имеет следующие методы:
Load("FileName%v")
Загружает шрейдер(эффект) с файла и возращает его хендл.
Draw("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f")
Рисует прямоугольник с указанным шрейдером.
DrawHudElement("Shader%h" "Technique%v" "Left%f" "Top%f" "Right%f" "Bottom%f")
Рисует прямоугольник с указанным шрейдером на худ рендеринге.
SetFloat("Shader%h" "ParamName%v" "Value%f")
Устанавнивает дробный параметр.
SetInt("Shader%h" "ParamName%v" "Value%i")
Устанавливает целосный параметр.
SetBool("Shader%h" "ParamName%v" "Value%b")
Устанавливает булевой параметр.
SetVector("Shader%h" "ParamName%v" "X%f" "Y%f" "Z%f" "W%f")
Устанавливает векторный параметр.
SetMatrix("Shader%h" "ParamName%v" "Matrix%h")
Устанавливает матричный параметр. Второй параметр - это поинтер на D3DMATRIX структуру.
SetTexture("Shader%h" "ParamName%v" "TextureName%v")
Устанавливает параметр текстуры. Второй параметр - это имя загруженной текстуры при помощи метода LoadTexture().
SetRwTexture("Shader%h" "ParamName%v" "Texture%h")
Устанавливает параметр текстуры. Второй параметр - это поинтер на обьект RwTexture.
LoadTexture("Name%v" "FileName%v")
Загружает текстуру с файла.
UnloadTexture("Name%v")
Выгружает текстуру из памяти.
Особенности
Семантика:
Вы можете использовать некоторые параметры по умолчанию, без передачи их в CLEO скрипты. Они отмечены как семантики. CLEO Shader API поддерживает такую семантику:
Тип Имя синтематика Описание
texture SCREEN_TEX frame buffer texture
texture DEPTH_TEX z-buffer texture
float3 SUN_CORONA_COL sun's corona color
float3 SUN_CORE_COL sun's core color
float3 SKY_TOP_COL
float3 SKY_BOTTOM_COL
float3 AMBIENT_COL
float2 SUN_POSN sun position (screen-space coordinates)
float SUN_SIZE
float DAYNIGHT_STATE
float WEATHER_FOGGYNESS
float WEATHER_CLOUD_COVERAGE
float WEATHER_RAIN
float WEATHER_UNDER_WATERNESS
int MULTISAMPLE_LEVELS AA level in game menu
bool NIGHT_VISION
bool INFRARED_VISION
bool HEAT_VISUALS
При определении переменной для такого параметра, хранятся в общем спецификаторе:
Код:
shared float2 sunPosn : SUN_POSN;
Используйте следующий параметр, если вы хотите привлечь полный / эффекта половина экрана:
SCREEN_BASE_X
SCREEN_BASE_Y
SCREEN_SIZE_X
SCREEN_SIZE_Y
SCREEN_HALF_X
SCREEN_HALF_Y
Пример
Блюр шрейдер
Код:
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();
}
}
Код:
{$CLEO}
{$I shaderApi}
var
0@: shader
end
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)
end
end
0A93: end_custom_thread
Ссылка на тему gtaforums.com