Show Unit1.pas syntax highlighted
unit Unit1;
interface
{$I GLScene.inc}
uses
//VCL
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,
//GLScene
GLScene, GLObjects, GLMisc, GLWin32Viewer, GLTexture, OpenGL1x,
GLCgShader, Cg, cgGL, StdCtrls, VectorGeometry, GLCadencer, ComCtrls,
GLVectorFileObjects, GLFile3DS, GLGraph, GLUserShader,
//FileFormats
JPEG, GLFileMD3,
//Misc components
StrangeCGZapShader, StrangeTrackBar
{$IFDEF STRANGE_INIFILE_SUPPORT}, StrangeIniObjects{$ENDIF};
type
TForm1 = class(TForm)
GLScene1: TGLScene;
GLMaterialLibrary1: TGLMaterialLibrary;
GLCadencer1: TGLCadencer;
Panel1: TPanel;
Splitter1: TSplitter;
GLFreeForm1: TGLFreeForm;
Panel9: TPanel;
Panel10: TPanel;
Timer1: TTimer;
GLXYZGrid1: TGLXYZGrid;
CameraTarget: TGLDummyCube;
GLFreeForm2: TGLFreeForm;
GLFreeForm3: TGLFreeForm;
GLSceneViewer1: TGLSceneViewer;
GLCamera1: TGLCamera;
LightCube: TGLDummyCube;
GLLightSource1: TGLLightSource;
GLSphere1: TGLSphere;
StrangeTrackBar1: TStrangeTrackBar;
StrangeTrackBar2: TStrangeTrackBar;
StrangeTrackBar3: TStrangeTrackBar;
StrangeTrackBar4: TStrangeTrackBar;
StrangeTrackBar5: TStrangeTrackBar;
StrangeTrackBar6: TStrangeTrackBar;
StrangeTrackBar7: TStrangeTrackBar;
StrangeTrackBar8: TStrangeTrackBar;
ShaderEnabledCheckBox: TCheckBox;
procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: integer; MousePos: TPoint; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure LightCubeProgress(Sender: TObject; const deltaTime,
newTime: Double);
procedure StrangeTrackBarChange(Sender: TObject);
procedure ShaderEnabledCheckBoxClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
mx, my: integer;
end;
var
Form1: TForm1;
Shader: TGLCGZapShader;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
GLFreeForm1.LoadFromFile('Models\mesh_near.md3');
GLFreeForm2.LoadFromFile('Models\Teapot.3ds');
GLFreeForm3.LoadFromFile('Models\xleg.3DS');
GLFreeForm1.Scale.Scale(0.2);
GLFreeForm3.Scale.Scale(20);
GLMaterialLibrary1.LibMaterialByName('Fighter').Material.Texture.Image.LoadFromFile('Textures\FighterTexture.jpg');
Shader := TGLCGZapShader.Create(Self);
Shader.Cadencer := GLCadencer1;
GLMaterialLibrary1.LibMaterialByName('LibMaterial').Shader := Shader;
//update all parameters
StrangeTrackBarChange(Self);
end;
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
begin
mx := X;
my := Y;
end;
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
begin
if Shift <> [] then
begin
GLCamera1.MoveAroundTarget(my - Y, mx - X);
mx := X;
my := Y;
end;
end;
procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
begin
GLSceneViewer1.Invalidate;
end;
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: integer; MousePos: TPoint; var Handled: Boolean);
begin
with GLSceneViewer1 do
if PtInRect(ClientRect, ScreenToClient(MousePos)) then
begin
GLCamera1.AdjustDistanceToTarget(1 + (WheelDelta / 120) * 0.5);
Handled := True;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with GLSceneViewer1 do
begin
Caption := Format('Strange Cg Zap Shader Demo by Da Stranger - November ''2006 - %.1f fps', [FramesPerSecond]);
ResetPerformanceMonitor;
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
if key = #27 then
Close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shader.Destroy;
GLCadencer1.Enabled := False;
end;
procedure TForm1.LightCubeProgress(Sender: TObject; const deltaTime,
newTime: Double);
begin
LightCube.MoveObjectAround(CameraTarget, 0, - Deltatime * 10);
end;
procedure TForm1.StrangeTrackBarChange(Sender: TObject);
begin
if Shader = nil then Exit;
Shader.NoiseSpeed1 := StrangeTrackBar1.RealPosition;
Shader.NoiseSpeed2 := StrangeTrackBar2.RealPosition;
Shader.NoiseSpeed3 := StrangeTrackBar3.RealPosition;
Shader.Spread := StrangeTrackBar4.RealPosition;
Shader.Gamma := StrangeTrackBar5.RealPosition;
Shader.Gain := StrangeTrackBar6.RealPosition;
Shader.Fader := StrangeTrackBar7.RealPosition;
Shader.Alpha := StrangeTrackBar8.RealPosition;
end;
procedure TForm1.ShaderEnabledCheckBoxClick(Sender: TObject);
begin
Shader.Enabled := ShaderEnabledCheckBox.Checked;
end;
end.
See more files for this project here