Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Xors3D
Сообщение от dsd
Ну так почитай, все вопросы и уйдут.
|
Не поможет.
Вот старый пример:
Include "headers\blitz3d\xorsbind.bb"
script = xLoadScript("pssm.txt")
xExecuteScript(script)
Это код блица, ничего не объявляется, получается движок сам всё находит.
В скрипте было следующие:
float CurveValue(float newvalue, float oldvalue, int increments)
{
if(increments > 1) oldvalue = oldvalue - (oldvalue - newvalue) / increments;
if(increments <= 1) oldvalue = newvalue;
return oldvalue;
}
int main()
{
// инициализация
string path = "PSSM Demo via xScript";
xAppTitle(path);
xGraphics3D(800, 600, 32, 0, 1);
xJoyDown(0, 1);
xCreateDSS(1024, 1024);
xSetTextureFiltering(6);
xAntiAlias(1);
// камера
int cam = xCreateCamera(0);
xPositionEntity(cam, 0, 20, -210, 1);
xCameraClsColor(cam, 190, 190, 190);
xCameraRange(cam, 0.5, 2000);
// инициализация PSSM
xPSSMInit(cam, "media\\PSSM.fx", 1024);
xPSSMLightTarget(0, -20, 0);
xPSSMLightZoom(0.1);
// мир
path = "media\\city.b3d";
int test = xLoadMesh(path, 0);
xPSSMSetEntity(test, 1, 1);
// пост-эффект для PSSM
int poly = xCreatePostEffectPoly(cam, 1);
int tex = xCreateTexture(800, 600, 1, 1);
int tex2 = xCreateTexture(800, 600, 1, 1);
int brushedmetal = xLoadFXFile("media\\Shadow_postEffect.fx");
xSetEntityEffect(poly, brushedmetal);
xSetEffectTechnique(poly, "Diffuse");
xSetEffectMatrixSemantic(poly, "MatWorldViewProj", 1);
xSetEffectTexture(poly, "tDiffuse", tex, 0);
xSetEffectTexture(poly, "tEmissive", tex2, 0);
// главный цикл
while(!xKeyDown(1))
{
// управление камерой
if(xKeyDown(17)) xMoveEntity(cam, 0, 0, 1, 0);
if(xKeyDown(31)) xMoveEntity(cam, 0, 0, -1, 0);
if(xKeyDown(30)) xMoveEntity(cam, -1, 0, 0, 0);
if(xKeyDown(32)) xMoveEntity(cam, 1, 0, 0, 0);
float mxs = CurveValue(xMouseXSpeed() * 0.5, mxs, 4.5);
float mys = CurveValue(xMouseYSpeed() * 0.5, mys, 4.5);
float camxa = camxa - mxs % 360;
float camya = camya + mys;
if(camya < -89) camya = -89;
if(camya > 89) camya = 89;
xMoveMouse(400,300);
xRotateEntity(cam, camya, camxa, 0, 0);
// обновление позиции и вращения источника света
xUpdateWorld(1.0);
xPSSMLightSource(-600, 450, 600);
float fLightRotation = float(timeGetTime() / 1500.0);
xPSSMLightSource(-600 * sin(fLightRotation), 450, 600 * cos(fLightRotation));
// рендер мира
xPSSMRender(cam, 0.85, 4, tex);
xSetBuffer(xTextureBuffer(tex2, 0));
xRenderWorld(1.0);
xSetBuffer(xBackBuffer());
xRenderPostEffect(poly);
// вывод на экран
xText(10, 10, "FPS: " + xGetFPS(), 0, 0);
xFlip();
}
return 1;
}
|