Доделал таки Deferred Shading в движке,правдо SpotLight ещё не сделал
Вот как выглидит код:
#include "..\Engine/Engine.h"
#include "windows.h"
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
void main(){
EngineInitialize("Reality-Engine.html","d3d9","","");
Graphics3D(1024,768,32,true,false);
SetBuffer(BackBuffer());
DeferredInitialize();
TFont font = LoadFont("Arial",12,true);
SetFont(font);
Color(1,1,1,1);
TWorld world = CreateWorld();
SetWorld(world);
SetCurrentDirectory("media");
TCamera camera = CreateCamera();
CameraClsColor(camera,0,0,0);
CameraRange(camera,1,100000000);
CameraViewport(camera,0,0,GraphicsWidth(),Graphics Height());
PositionEntity(camera,0,10,-30);
TMesh model = CreateCube();
PositionEntity(model,0,15,0);
TMesh room = LoadMesh("level.b3d");
OptimizeMesh(room);
TMesh chel = LoadMesh("ut3.b3d");
OptimizeMesh(chel);
PositionEntity(chel,0,1,-30);
OptimizeMesh(model);
UpdateNormals(room);
UpdateTangents(room);
EntityTexture(model,LoadTexture("Rockwall_Diffuse. jpg",TEXTURE_2D_STAND),0,0);
EntityTexture(model,LoadTexture("Rockwall_Normal.p ng",TEXTURE_2D_STAND),0,1);
TShader shader = LoadShader("","GBuffer.fx");
EntityShader(model,shader);
TShader shaders = LoadShader("","GBufferShared.fx");
EntityShader(room,shaders);
EntityShader(chel,shader);
TLight omni = CreateLight(POINT_LIGHT);
LightRange(omni,50);
LightColor(omni,0.9f,0.3f,0.3f);
PositionEntity(omni,0,10,-35);
TLight omni4 = CreateLight(DIRECTIONAL_LIGHT);
LightColor(omni4,1,1,1);
PositionEntity(omni4,0,520,0);
float move = 9.0f;
while(!KeyDown(KC_ESCAPE)){
TurnEntity(model,0,0.5f,0);
TurnEntity(camera,MouseYSpeed(),MouseXSpeed(),0);
if( KeyDown(KC_Q))
MoveEntity(camera,0,move,0);
if( KeyDown(KC_E))
MoveEntity(camera,0,-move,0);
if( KeyDown(KC_W))
MoveEntity(camera,0,0,move);
if( KeyDown(KC_S))
MoveEntity(camera,0,0,-move);
if( KeyDown(KC_A))
MoveEntity(camera,-move,0,0);
if( KeyDown(KC_D))
MoveEntity(camera,move,0,0);
if(KeyDown(KC_LSHIFT))
move = 14;
else
move = 9;
UpdateWorld();
SetBuffer(GetGBuffer());
RenderWorld();
SetBuffer(BackBuffer());
RenderLights();
char buf[512];
sprintf(buf,"FPS:%d",FPS());
Text(0,GraphicsHeight()-30,buf);
sprintf(buf,"Tris:%d",TrisRendered());
Text(0,GraphicsHeight()-50,buf);
Flip();
}
EngineShutdown();
}
А в атч скрин как это выглидит.