1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528 |
- unit fShaderLab;
- interface
- uses
- Winapi.Windows,
- Winapi.Messages,
- Winapi.OpenGL,
- System.SysUtils,
- System.Variants,
- System.Classes,
- System.Math,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.StdCtrls,
- Vcl.ExtCtrls,
- Vcl.ComCtrls,
- Vcl.ExtDlgs,
- // Picture FileFormats
- Vcl.Imaging.Jpeg,
- Vcl.Imaging.PngImage,
- GLS.VectorTypes,
- GLS.VectorLists,
- GLS.VectorGeometry,
- GLS.BaseClasses,
- GLS.PersistentClasses,
- GLS.Keyboard,
- GLS.Material,
- GLS.Scene,
- GLS.SceneViewer,
- GLS.VectorFileObjects,
- GLS.Objects,
- GLS.Texture,
- GLS.Context,
- GLS.Cadencer,
- GLS.Coordinates,
- GLS.State,
- GLS.RenderContextInfo,
- GLS.TextureFormat,
- GLS.Color,
- GLS.Graphics,
- GLS.MeshUtils,
- GLS.Utils,
- GLS.GeomObjects,
- GLS.SimpleNavigation,
- GLS.HUDObjects,
- GLSL.CustomShader,
- GLSL.ShapeShaders;
- type
- TFormShaderLab = class(TForm)
- Panel1: TPanel;
- Viewer: TGLSceneViewer;
- MaterialLibrary: TGLMaterialLibrary;
- GLScene1: TGLScene;
- Cadencer: TGLCadencer;
- World: TGLDummyCube;
- Camera: TGLCamera;
- GLLightSource1: TGLLightSource;
- GLSphere1: TGLSphere;
- PageControl1: TPageControl;
- TabSheet1: TTabSheet;
- chkAnimScene: TCheckBox;
- chkLightmoving: TCheckBox;
- chkFurShader: TCheckBox;
- LightCube: TGLDummyCube;
- lblFurDistance: TLabel;
- tbFurLength: TTrackBar;
- TabSheet2: TTabSheet;
- lblLatticeScaleX: TLabel;
- tbLatticeScaleX: TTrackBar;
- lblLatticeThresholdX: TLabel;
- tbLatticeThresholdX: TTrackBar;
- chkLatticeShader: TCheckBox;
- lblLatticeScaleY: TLabel;
- tbLatticeScaleY: TTrackBar;
- tbLatticeThresholdY: TTrackBar;
- TabSheet3: TTabSheet;
- chkErosionShader: TCheckBox;
- FreeForm: TGLFreeForm;
- TabSheet4: TTabSheet;
- chkIvoryShader: TCheckBox;
- LightCube2: TGLDummyCube;
- GLLightSource2: TGLLightSource;
- Label10: TLabel;
- Label11: TLabel;
- cbxFurBlendSrc: TComboBox;
- cbxFurBlendDest: TComboBox;
- Objects: TGLDummyCube;
- lblFurPassCount1: TLabel;
- tbFurPassCount: TTrackBar;
- Label4: TLabel;
- tbLatticeSpecularPower: TTrackBar;
- Label5: TLabel;
- tbLatticeLightPower: TTrackBar;
- TabSheet5: TTabSheet;
- chkGoochShader: TCheckBox;
- GLTorus1: TGLTorus;
- lblFurLength: TLabel;
- Label7: TLabel;
- tbFurMaxLength: TTrackBar;
- lblFurMaxLength: TLabel;
- lblFurPassCount: TLabel;
- chkFurRandomLength: TCheckBox;
- Label12: TLabel;
- tbFurDensity: TTrackBar;
- lblFurDensity: TLabel;
- Label6: TLabel;
- tbFurLightPower: TTrackBar;
- lblFurLightPower: TLabel;
- Label8: TLabel;
- Label9: TLabel;
- Shape1: TShape;
- Shape2: TShape;
- ColorDialog: TColorDialog;
- Label13: TLabel;
- Shape3: TShape;
- Label14: TLabel;
- Shape4: TShape;
- Label15: TLabel;
- Shape5: TShape;
- Label16: TLabel;
- Shape6: TShape;
- Label17: TLabel;
- Shape7: TShape;
- Label18: TLabel;
- tbGoochDFactor: TTrackBar;
- lblGoochDFactor: TLabel;
- Label20: TLabel;
- tbGoochWFactor: TTrackBar;
- lblGoochWFactor: TLabel;
- Label22: TLabel;
- tbGoochCFactor: TTrackBar;
- lblGoochCFactor: TLabel;
- Label24: TLabel;
- tbGoochAFactor: TTrackBar;
- lblGoochAFactor: TLabel;
- Label26: TLabel;
- tbGoochSFactor: TTrackBar;
- lblGoochSFactor: TLabel;
- Label1: TLabel;
- tbErosionFactor: TTrackBar;
- lblErosionFactor: TLabel;
- Label3: TLabel;
- tberosionScale: TTrackBar;
- lblErosionScale: TLabel;
- Label25: TLabel;
- tbErosionIFactor1: TTrackBar;
- lblErosionIFactor1: TLabel;
- Label28: TLabel;
- tbErosionIFactor2: TTrackBar;
- lblerosionIFactor2: TLabel;
- Label2: TLabel;
- tbErosionAmbientF: TTrackBar;
- lblErosionAmbientF: TLabel;
- Label27: TLabel;
- tbErosionDiffuseF: TTrackBar;
- lblErosionDiffuseF: TLabel;
- Label30: TLabel;
- tbErosionSpecularF: TTrackBar;
- lblErosionSpecularF: TLabel;
- Label32: TLabel;
- tbErosionSpecularR: TTrackBar;
- lblErosionSpecularR: TLabel;
- Label34: TLabel;
- tbErosionAnisoR: TTrackBar;
- lblErosionAnisoR: TLabel;
- Label36: TLabel;
- Shape8: TShape;
- Shape9: TShape;
- Label37: TLabel;
- lblLatticeThresholdY: TLabel;
- lblLatticeSpecularPower: TLabel;
- lblLatticeLightPower: TLabel;
- Label23: TLabel;
- Label29: TLabel;
- Label31: TLabel;
- Label33: TLabel;
- Label35: TLabel;
- Shape10: TShape;
- Label38: TLabel;
- Shape11: TShape;
- Label39: TLabel;
- Shape12: TShape;
- cbxGootchBlendMode: TComboBox;
- Label40: TLabel;
- tbGoochAlpha: TTrackBar;
- Label41: TLabel;
- lblGoochAlpha: TLabel;
- TabSheet6: TTabSheet;
- Label19: TLabel;
- tbSemDiffuseF: TTrackBar;
- lblSemDiffuseF: TLabel;
- Label42: TLabel;
- tbSemAmbientF: TTrackBar;
- lblSemAmbientF: TLabel;
- Label44: TLabel;
- tbSemSpecularF: TTrackBar;
- lblSemSpecularF: TLabel;
- Label46: TLabel;
- Shape13: TShape;
- Label47: TLabel;
- Shape14: TShape;
- chkSEMShader: TCheckBox;
- Displacement: TTabSheet;
- chkVDShader: TCheckBox;
- Label21: TLabel;
- tbVDDiffuseF: TTrackBar;
- Label43: TLabel;
- tbVDAmbientF: TTrackBar;
- Label45: TLabel;
- tbVDSpecularF: TTrackBar;
- lblVDSpecularF: TLabel;
- lblVDAmbientF: TLabel;
- lblVDDiffuseF: TLabel;
- Label51: TLabel;
- Shape15: TShape;
- Label52: TLabel;
- Shape16: TShape;
- chkVDAnimate: TCheckBox;
- Label48: TLabel;
- tbVDNoise: TTrackBar;
- lblVDNoise: TLabel;
- Label49: TLabel;
- tbVDPeriod: TTrackBar;
- lblVDPeriod: TLabel;
- Label53: TLabel;
- tbVDNScale: TTrackBar;
- lblVDNScale: TLabel;
- Label55: TLabel;
- tbVDTurb: TTrackBar;
- lblVDTurb: TLabel;
- Label57: TLabel;
- tbVDDispScale: TTrackBar;
- lblVDDispScale: TLabel;
- Label50: TLabel;
- tbVDTimeF: TTrackBar;
- lblVDTimeF: TLabel;
- cbxObjects: TComboBox;
- Label54: TLabel;
- Button2: TButton;
- Button3: TButton;
- GLSimpleNavigation1: TGLSimpleNavigation;
- Button1: TButton;
- Button4: TButton;
- Button5: TButton;
- Button6: TButton;
- Button7: TButton;
- Button8: TButton;
- Button9: TButton;
- OpenPictureDialog: TOpenPictureDialog;
- TabSheet7: TTabSheet;
- Label56: TLabel;
- Label58: TLabel;
- tbGlassDepth: TTrackBar;
- tbGlassMix: TTrackBar;
- Label59: TLabel;
- Shape17: TShape;
- lblGlassDepth: TLabel;
- lblGlassMix: TLabel;
- Button10: TButton;
- chkGlassShader: TCheckBox;
- Label60: TLabel;
- tbGlassAlpha: TTrackBar;
- lblGlassAlpha: TLabel;
- Label61: TLabel;
- cbxGlassBlendSrc: TComboBox;
- Label62: TLabel;
- cbxGlassBlendDst: TComboBox;
- ScreenBackGround: TGLHUDSprite;
- chkBackgroundImg: TCheckBox;
- Button11: TButton;
- Label63: TLabel;
- edtFurGravityX: TEdit;
- edtFurGravityY: TEdit;
- edtFurGravityZ: TEdit;
- TabSheet8: TTabSheet;
- chkToonShader: TCheckBox;
- Label64: TLabel;
- tbToonHighlightSize: TTrackBar;
- lblToonHighlightSize: TLabel;
- Label66: TLabel;
- tbToonMidSize: TTrackBar;
- lblToonMidSize: TLabel;
- Label68: TLabel;
- tbToonShadowSize: TTrackBar;
- lblToonShadowSize: TLabel;
- Label70: TLabel;
- tbToonOutlineWidth: TTrackBar;
- lblToonOutlineWidth: TLabel;
- Label72: TLabel;
- Shape18: TShape;
- Label73: TLabel;
- Shape19: TShape;
- Label74: TLabel;
- Shape20: TShape;
- Label75: TLabel;
- Shape21: TShape;
- Label76: TLabel;
- Shape22: TShape;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure chkFurShaderClick(Sender: TObject);
- procedure CadencerProgress(Sender: TObject;
- const deltaTime, newTime: Double);
- procedure LightCubeProgress(Sender: TObject;
- const deltaTime, newTime: Double);
- procedure tbFurLengthChange(Sender: TObject);
- procedure tbLatticeScaleXChange(Sender: TObject);
- procedure chkLatticeShaderClick(Sender: TObject);
- procedure tbLatticeScaleYChange(Sender: TObject);
- procedure tbLatticeThresholdXChange(Sender: TObject);
- procedure tbLatticeThresholdYChange(Sender: TObject);
- procedure chkIvoryShaderClick(Sender: TObject);
- procedure LightCube2Progress(Sender: TObject;
- const deltaTime, newTime: Double);
- procedure cbxFurBlendDestChange(Sender: TObject);
- procedure cbxFurBlendSrcChange(Sender: TObject);
- procedure tbFurPassCountChange(Sender: TObject);
- procedure chkGoochShaderClick(Sender: TObject);
- procedure tbFurMaxLengthChange(Sender: TObject);
- procedure tbFurDensityChange(Sender: TObject);
- procedure chkFurRandomLengthClick(Sender: TObject);
- procedure tbFurLightPowerChange(Sender: TObject);
- procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape3MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape4MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape5MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape6MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape7MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure tbGoochDFactorChange(Sender: TObject);
- procedure tbGoochWFactorChange(Sender: TObject);
- procedure tbGoochCFactorChange(Sender: TObject);
- procedure tbGoochAFactorChange(Sender: TObject);
- procedure tbGoochSFactorChange(Sender: TObject);
- procedure cbxGoochBlendSrcChange(Sender: TObject);
- procedure cbxGoochBlendDstChange(Sender: TObject);
- procedure chkErosionShaderClick(Sender: TObject);
- procedure tbErosionFactorChange(Sender: TObject);
- procedure tberosionScaleChange(Sender: TObject);
- procedure tbErosionIFactor1Change(Sender: TObject);
- procedure tbErosionIFactor2Change(Sender: TObject);
- procedure tbErosionDiffuseFChange(Sender: TObject);
- procedure tbErosionAmbientFChange(Sender: TObject);
- procedure tbErosionSpecularFChange(Sender: TObject);
- procedure tbErosionSpecularRChange(Sender: TObject);
- procedure tbErosionAnisoRChange(Sender: TObject);
- procedure Shape8MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape9MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure tbLatticeSpecularPowerChange(Sender: TObject);
- procedure tbLatticeLightPowerChange(Sender: TObject);
- procedure Shape10MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape11MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape12MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure cbxGootchBlendModeChange(Sender: TObject);
- procedure tbGoochAlphaChange(Sender: TObject);
- procedure chkSEMShaderClick(Sender: TObject);
- procedure tbSemDiffuseFChange(Sender: TObject);
- procedure tbSemAmbientFChange(Sender: TObject);
- procedure tbSemSpecularFChange(Sender: TObject);
- procedure Shape13MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape14MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure chkVDShaderClick(Sender: TObject);
- procedure tbVDDiffuseFChange(Sender: TObject);
- procedure tbVDAmbientFChange(Sender: TObject);
- procedure tbVDSpecularFChange(Sender: TObject);
- procedure tbVDNoiseChange(Sender: TObject);
- procedure tbVDPeriodChange(Sender: TObject);
- procedure tbVDNScaleChange(Sender: TObject);
- procedure tbVDTurbChange(Sender: TObject);
- procedure tbVDDispScaleChange(Sender: TObject);
- procedure tbVDTimeFChange(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure cbxObjectsChange(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button8Click(Sender: TObject);
- procedure Button5Click(Sender: TObject);
- procedure Button6Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure Button9Click(Sender: TObject);
- procedure chkGlassShaderClick(Sender: TObject);
- procedure Shape17MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure tbGlassDepthChange(Sender: TObject);
- procedure tbGlassMixChange(Sender: TObject);
- procedure Button10Click(Sender: TObject);
- procedure tbGlassAlphaChange(Sender: TObject);
- procedure cbxGlassBlendSrcChange(Sender: TObject);
- procedure cbxGlassBlendDstChange(Sender: TObject);
- procedure FormResize(Sender: TObject);
- procedure Button11Click(Sender: TObject);
- procedure chkBackgroundImgClick(Sender: TObject);
- procedure EditFloatKeyPress(Sender: TObject; var Key: Char);
- procedure edtFurGravityXChange(Sender: TObject);
- procedure edtFurGravityYChange(Sender: TObject);
- procedure edtFurGravityZChange(Sender: TObject);
- procedure chkToonShaderClick(Sender: TObject);
- procedure tbToonHighlightSizeChange(Sender: TObject);
- procedure tbToonMidSizeChange(Sender: TObject);
- procedure tbToonShadowSizeChange(Sender: TObject);
- procedure tbToonOutlineWidthChange(Sender: TObject);
- procedure Shape18MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape19MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape20MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape21MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Shape22MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- end;
- var
- FormShaderLab: TFormShaderLab;
- mx, my: Integer;
- FurShader: TGLSLFurShader;
- LatticeShader: TGLSLLatticeShader;
- IvoryShader: TGLSLIvoryShader;
- GoochShader: TGLSLSimpleGoochShader;
- ErosionShader: TGLSLSimpleErosionShader;
- SEMShader: TGLSLSemShader;
- VertexDisplacementShader: TGLSLVertexDisplacementShader;
- GlassShader: TGLSLGlassShader;
- ToonShader: TGLSLToonShader;
- // DimpleShader
- // WoodShader
- // PhongShader
- // CookTorrenceShader
- // OreilNayar
- i, j: Integer;
- v: Single;
- //----------------------------------------
- implementation
- //----------------------------------------
- {$R *.dfm}
- uses
- GLS.FileTGA,
- GLS.FileOBJ,
- GLS.FileSTL,
- GLS.FileLWO,
- GLS.FileQ3BSP,
- GLS.FileOCT,
- GLS.FileMS3D,
- GLS.FileNMF,
- GLS.FileMD3,
- GLS.File3DS,
- GLS.FileMD2,
- GLS.FileSMD,
- GLS.FilePLY,
- GLS.FileGTS,
- GLS.FileVRML,
- GLS.FileMD5,
- GLS.FileTIN,
- GLS.FileDXF,
- GLS.FileGRD;
- procedure TFormShaderLab.Button10Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('RefractMap')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button11Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('BackgroundTex')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button1Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('ExplosionTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button2Click(Sender: TObject);
- begin
- if ColorDialog.Execute then
- begin
- Viewer.Buffer.BackgroundColor := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Button3Click(Sender: TObject);
- begin
- VertexDisplacementShader.ElapsedTime := 1.0;
- end;
- procedure TFormShaderLab.Button4Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('MatCapTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button5Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('ErosionMainTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button6Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('ErosionTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button8Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('MainTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.Button9Click(Sender: TObject);
- begin
- if OpenPictureDialog.Execute then
- begin
- MaterialLibrary.LibMaterialByName('NoiseTexture')
- .Material.Texture.Image.LoadFromFile(OpenPictureDialog.FileName);
- end;
- end;
- procedure TFormShaderLab.CadencerProgress(Sender: TObject;
- const deltaTime, newTime: Double);
- begin
- if chkAnimScene.Checked then
- begin
- // GLSphere1.Pitch(40 * deltaTime);
- Objects.Pitch(40 * deltaTime);
- Objects.Turn(20 * deltaTime);
- Objects.Roll(40 * deltaTime);
- end;
- if TabSheet1.Enabled then //Fur
- begin
- if (i <= 10) and (j >= 0) then
- begin
- v := v + 0.2;
- i := i + 1;
- if i = 10 then
- j := 0;
- end;
- if (j <= 10) and (i >= 0) then
- begin
- v := v - 0.2;
- j := j + 1;
- if j = 10 then
- i := 0;
- end;
- FurShader.Gravity.Y := v;
- end;
- if chkVDAnimate.Checked then
- begin
- VertexDisplacementShader.ElapsedTime := newTime;
- end;
- Viewer.Invalidate;
- end;
- procedure TFormShaderLab.cbxFurBlendDestChange(Sender: TObject);
- begin
- FurShader.BlendDst := TGLBlendFunction(cbxFurBlendDest.ItemIndex);
- end;
- procedure TFormShaderLab.cbxFurBlendSrcChange(Sender: TObject);
- begin
- FurShader.BlendSrc := TGLBlendFunction(cbxFurBlendSrc.ItemIndex);
- end;
- procedure TFormShaderLab.cbxGlassBlendDstChange(Sender: TObject);
- begin
- GlassShader.BlendDst := TGLBlendFunction(cbxGlassBlendDst.ItemIndex);
- end;
- procedure TFormShaderLab.cbxGlassBlendSrcChange(Sender: TObject);
- begin
- GlassShader.BlendSrc := TGLBlendFunction(cbxGlassBlendSrc.ItemIndex);
- end;
- procedure TFormShaderLab.cbxGoochBlendDstChange(Sender: TObject);
- begin
- //GoochShader.BlendDst := TGLBlendFunction(cbxGoochBlendDst.ItemIndex);
- end;
- procedure TFormShaderLab.cbxGoochBlendSrcChange(Sender: TObject);
- begin
- //GoochShader.BlendSrc := TGLBlendFunction(cbxGoochBlendSrc.ItemIndex);
- end;
- procedure TFormShaderLab.cbxGootchBlendModeChange(Sender: TObject);
- begin
- case cbxGootchBlendMode.ItemIndex of
- 0: GoochShader.BlendingMode := bmxOpaque;
- 1: GoochShader.BlendingMode := bmxTransparency;
- 2: GoochShader.BlendingMode := bmxAdditive;
- 3: GoochShader.BlendingMode := bmxAlphaTest50;
- 4: GoochShader.BlendingMode := bmxAlphaTest100;
- 5: GoochShader.BlendingMode := bmxModulate;
- 6: GoochShader.BlendingMode := bmxDestColorOne;
- 7: GoochShader.BlendingMode := bmxDestAlphaOne;
- end;
- end;
- procedure TFormShaderLab.cbxObjectsChange(Sender: TObject);
- begin
- case cbxObjects.ItemIndex of
- 0:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\suzanne-blender.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 1:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\torus-knot2.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 2:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\sputnik.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 3:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\rectangle_spiral.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 4:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\geode.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 5:
- begin
- GLSphere1.Visible := False;
- GLTorus1.Visible := False;
- FreeForm.LoadFromFile('models\syamil_19.obj');
- GlassShader.OwnerObject := FreeForm;
- FreeForm.Visible := true;
- end;
- 6:
- begin
- GLSphere1.Visible := False;
- FreeForm.Visible := False;
- GLTorus1.Visible := true;
- GlassShader.OwnerObject := GLTorus1;
- end;
- 7:
- begin
- GLTorus1.Visible := False;
- FreeForm.Visible := False;
- GLSphere1.Visible := true;
- GlassShader.OwnerObject := GLSphere1;
- end;
- end;
- end;
- procedure TFormShaderLab.chkBackgroundImgClick(Sender: TObject);
- begin
- Button11.Enabled := chkBackgroundImg.Checked;
- ScreenBackGround.Visible := chkBackgroundImg.Checked;
- if ScreenBackGround.Visible then
- Viewer.Buffer.BackgroundColor := clBlack;
- end;
- procedure TFormShaderLab.chkErosionShaderClick(Sender: TObject);
- begin
- ErosionShader.Enabled := chkErosionShader.Checked;
- if ErosionShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := ErosionShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.chkFurRandomLengthClick(Sender: TObject);
- begin
- FurShader.RandomFurLength := chkFurRandomLength.Checked;
- end;
- procedure TFormShaderLab.chkFurShaderClick(Sender: TObject);
- begin
- FurShader.Enabled := chkFurShader.Checked;
- if FurShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := FurShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- // GLsphere1.Material.LibMaterialName := 'ShaderMaterial'
- // else
- // GLsphere1.Material.LibMaterialName := 'MainTexture';
- end;
- procedure TFormShaderLab.chkLatticeShaderClick(Sender: TObject);
- begin
- LatticeShader.Enabled := chkLatticeShader.Checked;
- if LatticeShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := LatticeShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.chkSEMShaderClick(Sender: TObject);
- begin
- SEMShader.Enabled := chkSEMShader.Checked;
- if SEMShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := SEMShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.chkToonShaderClick(Sender: TObject);
- begin
- ToonShader.Enabled := chkToonShader.Checked;
- if ToonShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := ToonShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.chkVDShaderClick(Sender: TObject);
- begin
- VertexDisplacementShader.Enabled := chkVDShader.Checked;
- if VertexDisplacementShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader :=
- VertexDisplacementShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.EditFloatKeyPress(Sender: TObject; var Key: Char);
- begin
- if not CharInSet(Key,['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', '-']) then
- Key := #0;
- end;
- procedure TFormShaderLab.edtFurGravityXChange(Sender: TObject);
- begin
- if (edtFurGravityX.Text <> '') and (edtFurGravityX.Text <> '-') and
- (edtFurGravityX.Text <> ',') and (edtFurGravityX.Text <> '.') then
- FurShader.Gravity.X := StrToFloat(edtFurGravityX.Text);
- end;
- procedure TFormShaderLab.edtFurGravityYChange(Sender: TObject);
- begin
- if (edtFurGravityY.Text <> '') and (edtFurGravityY.Text <> '-') and
- (edtFurGravityY.Text <> ',') and (edtFurGravityY.Text <> '.') then
- FurShader.Gravity.Y := StrToFloat(edtFurGravityY.Text);
- end;
- procedure TFormShaderLab.edtFurGravityZChange(Sender: TObject);
- begin
- if (edtFurGravityZ.Text <> '') and (edtFurGravityZ.Text <> '-') and
- (edtFurGravityZ.Text <> ',') and (edtFurGravityZ.Text <> '.') then
- FurShader.Gravity.Z := StrToFloat(edtFurGravityZ.Text);
- end;
- procedure TFormShaderLab.chkGlassShaderClick(Sender: TObject);
- begin
- GlassShader.Enabled := chkGlassShader.Checked;
- if GlassShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := GlassShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.chkGoochShaderClick(Sender: TObject);
- begin
- GoochShader.Enabled := chkGoochShader.Checked;
- if GoochShader.Enabled then
- begin
- // MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader.Enabled := False;
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := GoochShader
- end
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.FormCreate(Sender: TObject);
- begin
- SetGLSceneMediaDir();
- Screen.Cursor := crHourGlass;
- // FreeForm.IgnoreMissingTextures := True;
- FreeForm.LoadFromFile('models\suzanne-blender.obj');
- FreeForm.Visible := False;
- // Then load textures
- MaterialLibrary.LibMaterialByName('ShaderMaterial')
- .Material.Texture.Image.LoadFromFile('textures\bigtiger.jpg');
- MaterialLibrary.LibMaterialByName('BackgroundTex')
- .Material.Texture.Image.LoadFromFile('textures\randal.jpg');
- FreeForm.Material.MaterialLibrary := MaterialLibrary;
- FreeForm.Material.LibMaterialName := 'ShaderMaterial';
- GLTorus1.Material.MaterialLibrary := MaterialLibrary;
- GLTorus1.Material.LibMaterialName := 'ShaderMaterial';
- GLTorus1.Visible := False;
- GLSphere1.Material.MaterialLibrary := MaterialLibrary;
- GLSphere1.Material.LibMaterialName := 'ShaderMaterial';
- GLSphere1.Visible := False;
- MaterialLibrary.LibMaterialByName('MainTexture')
- .Material.Texture.Image.LoadFromFile('textures\bigtiger.jpg');
- // My Shader
- FurShader := TGLSLFurShader.Create(self);
- MaterialLibrary.LibMaterialByName('NoiseTexture')
- .Material.Texture.Image.LoadFromFile('textures\fur.tga');
- FurShader.MaterialLibrary := MaterialLibrary;
- FurShader.MainTextureName := 'MainTexture';
- FurShader.NoiseTextureName := 'NoiseTexture';
- FurShader.Gravity.X := 0;
- FurShader.Gravity.Y := -2.0;
- FurShader.Gravity.Z := 0;
- FurShader.Enabled := False;
- LatticeShader := TGLSLLatticeShader.Create(self);
- LatticeShader.MaterialLibrary := MaterialLibrary;
- LatticeShader.MainTextureName := 'MainTexture';
- LatticeShader.Enabled := False;
- ErosionShader := TGLSLSimpleErosionShader.Create(self);
- MaterialLibrary.LibMaterialByName('ErosionNoiseTexture')
- .Material.Texture.Image.LoadFromFile('textures\ErosionNoise.tga');
- MaterialLibrary.LibMaterialByName('ErosionMainTexture')
- .Material.Texture.Image.LoadFromFile
- ('textures\eroded_scratch_metal_texture.jpg');
- MaterialLibrary.LibMaterialByName('ErosionTexture')
- .Material.Texture.Image.LoadFromFile
- ('textures\rust_eroded_scratch_metal_texture.jpg');
- ErosionShader.MaterialLibrary := MaterialLibrary;
- ErosionShader.MainTextureName := 'ErosionMainTexture';
- ErosionShader.ErosionTextureName := 'ErosionTexture';
- ErosionShader.NoiseTextureName := 'ErosionNoiseTexture';
- ErosionShader.Enabled := False;
- IvoryShader := TGLSLIvoryShader.Create(self);
- IvoryShader.Enabled := False;
- GoochShader := TGLSLSimpleGoochShader.Create(self);
- GoochShader.Enabled := False;
- SEMShader := TGLSLSemShader.Create(self);
- MaterialLibrary.LibMaterialByName('MatCapTexture')
- .Material.Texture.Image.LoadFromFile('textures\metal_matcap.jpg');
- SEMShader.MaterialLibrary := MaterialLibrary;
- SEMShader.MainTextureName := 'MatCapTexture';
- SEMShader.Enabled := False;
- VertexDisplacementShader := TGLSLVertexDisplacementShader.Create(self);
- MaterialLibrary.LibMaterialByName('ExplosionTexture')
- .Material.Texture.Image.LoadFromFile('textures\FireGrade2.png');
- VertexDisplacementShader.MaterialLibrary := MaterialLibrary;
- VertexDisplacementShader.MainTextureName := 'ExplosionTexture';
- VertexDisplacementShader.Enabled := False;
- GlassShader := TGLSLGlassShader.Create(self);
- MaterialLibrary.LibMaterialByName('RefractMap')
- .Material.Texture.Image.LoadFromFile('textures\barts.jpg');
- // Don't load any texture in EnvMap let it empty. The EnvMap is auto generated
- // MaterialLibrary.LibMaterialByName('EnvMap').Material.Texture.Image.LoadFromFile('textures\metal_matcap.jpg');
- // But we need to make a ScreenShoot of the Scene Once before Enbale the GlassShader; otherwise an exception is raised
- // I don't say at this time how to correct this
- // capture and create material from framebuffer
- Viewer.Buffer.CopyToTexture(MaterialLibrary.LibMaterialByName('EnvMap')
- .Material.Texture);
- GlassShader.MaterialLibrary := MaterialLibrary;
- GlassShader.MainTextureName := 'EnvMap';
- GlassShader.RefractionTextureName := 'RefractMap';
- GlassShader.OwnerObject := FreeForm;
- // GlassShader.Viewer := Viewer;
- GlassShader.Enabled := False;
- ToonShader := TGLSLToonShader.Create(self);
- FreeForm.Visible := true;
- Screen.Cursor := crDefault;
- i := 0;
- j := 0;
- v := 0.0;
- end;
- procedure TFormShaderLab.FormDestroy(Sender: TObject);
- begin
- Cadencer.Enabled := False;
- FurShader.Free;
- LatticeShader.Free;
- IvoryShader.Free;
- GoochShader.Free;
- ErosionShader.Free;
- SEMShader.Free;
- VertexDisplacementShader.Free;
- GlassShader.Free;
- end;
- procedure TFormShaderLab.FormResize(Sender: TObject);
- begin
- ScreenBackGround.Width := Viewer.Width;
- ScreenBackGround.Height := Viewer.Height;
- ScreenBackGround.Position.X := Viewer.Width / 2;
- ScreenBackGround.Position.Y := Viewer.Height / 2;
- end;
- procedure TFormShaderLab.chkIvoryShaderClick(Sender: TObject);
- begin
- IvoryShader.Enabled := chkIvoryShader.Checked;
- if IvoryShader.Enabled then
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := IvoryShader
- else
- MaterialLibrary.LibMaterialByName('ShaderMaterial').Shader := nil;
- end;
- procedure TFormShaderLab.LightCube2Progress(Sender: TObject;
- const deltaTime, newTime: Double);
- begin
- if chkLightmoving.Checked then
- LightCube2.MoveObjectAround(Camera.TargetObject, sin(newTime) * deltaTime *
- 20, deltaTime * 10);
- end;
- procedure TFormShaderLab.LightCubeProgress(Sender: TObject;
- const deltaTime, newTime: Double);
- begin
- if chkLightmoving.Checked then
- LightCube.MoveObjectAround(Camera.TargetObject, sin(newTime) * deltaTime *
- 10, deltaTime * 20);
- end;
- procedure TFormShaderLab.Shape10MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- LatticeShader.DiffuseColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape10.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape11MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- LatticeShader.AmbientColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape11.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape12MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- LatticeShader.SpecularColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape12.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape13MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- SEMShader.AmbientColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape13.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape14MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- SEMShader.SpecularColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape14.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape17MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GlassShader.DiffuseColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape17.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape18MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ToonShader.HighlightColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape18.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape19MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ToonShader.MidColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape19.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- FurShader.ColorScale.Color := ConvertWinColor(ColorDialog.Color);
- Shape1.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape20MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ToonShader.LightenShadowColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape20.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape21MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ToonShader.DarkenShadowrColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape21.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape22MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ToonShader.OutlinetColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape22.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- FurShader.Ambient.Color := ConvertWinColor(ColorDialog.Color);
- Shape2.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape3MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GoochShader.DiffuseColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape3.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape4MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GoochShader.WarmColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape4.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape5MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GoochShader.CoolColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape5.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape6MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GoochShader.AmbientColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape6.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape7MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- GoochShader.SpecularColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape7.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape8MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ErosionShader.AmbientColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape8.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.Shape9MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ColorDialog.Execute then
- begin
- ErosionShader.SpecularColor.Color := ConvertWinColor(ColorDialog.Color);
- Shape9.Brush.Color := ColorDialog.Color;
- end;
- end;
- procedure TFormShaderLab.tbErosionAmbientFChange(Sender: TObject);
- begin
- ErosionShader.AmbientFactor := tbErosionAmbientF.Position / 100;
- lblErosionAmbientF.Caption := FloatToStrF(ErosionShader.AmbientFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionAnisoRChange(Sender: TObject);
- begin
- ErosionShader.AnisotropicRoughness := tbErosionAnisoR.Position / 100;
- lblErosionAnisoR.Caption := FloatToStrF(ErosionShader.AnisotropicRoughness,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionDiffuseFChange(Sender: TObject);
- begin
- ErosionShader.DiffuseFactor := tbErosionDiffuseF.Position / 100;
- lblErosionDiffuseF.Caption := FloatToStrF(ErosionShader.DiffuseFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionFactorChange(Sender: TObject);
- begin
- ErosionShader.ErosionFactor := tbErosionFactor.Position / 100;
- lblErosionFactor.Caption := FloatToStrF(ErosionShader.ErosionFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionIFactor1Change(Sender: TObject);
- begin
- ErosionShader.IntensityFactor1 := tbErosionIFactor1.Position / 100;
- lblErosionIFactor1.Caption := FloatToStrF(ErosionShader.IntensityFactor1,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionIFactor2Change(Sender: TObject);
- begin
- ErosionShader.IntensityFactor2 := tbErosionIFactor2.Position / 100;
- lblerosionIFactor2.Caption := FloatToStrF(ErosionShader.IntensityFactor2,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tberosionScaleChange(Sender: TObject);
- begin
- ErosionShader.ErosionScale := tberosionScale.Position / 100;
- lblErosionScale.Caption := FloatToStrF(ErosionShader.ErosionScale,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionSpecularFChange(Sender: TObject);
- begin
- ErosionShader.SpecularFactor := tbErosionSpecularF.Position / 100;
- lblErosionSpecularF.Caption := FloatToStrF(ErosionShader.SpecularFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbErosionSpecularRChange(Sender: TObject);
- begin
- ErosionShader.SpecularRoughness := tbErosionSpecularR.Position / 100;
- lblErosionSpecularR.Caption := FloatToStrF(ErosionShader.SpecularRoughness,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbFurDensityChange(Sender: TObject);
- begin
- FurShader.FurDensity := tbFurDensity.Position / 100;
- lblFurDensity.Caption := FloatToStrF(FurShader.FurDensity, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbFurLengthChange(Sender: TObject);
- begin
- FurShader.FurLength := tbFurLength.Position / 100;
- lblFurLength.Caption := FloatToStrF(FurShader.FurLength, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbFurLightPowerChange(Sender: TObject);
- begin
- FurShader.LightIntensity := tbFurLightPower.Position / 100;
- lblFurLightPower.Caption := FloatToStrF(FurShader.LightIntensity,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbFurMaxLengthChange(Sender: TObject);
- begin
- FurShader.MaxFurLength := tbFurMaxLength.Position / 100;
- lblFurMaxLength.Caption := FloatToStrF(FurShader.MaxFurLength, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbFurPassCountChange(Sender: TObject);
- begin
- FurShader.PassCount := tbFurPassCount.Position;
- lblFurPassCount.Caption := FloatToStrF(FurShader.PassCount, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGlassAlphaChange(Sender: TObject);
- begin
- GlassShader.Alpha := tbGlassAlpha.Position / 100;
- lblGlassAlpha.Caption := FloatToStrF(GlassShader.Alpha, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGlassDepthChange(Sender: TObject);
- begin
- GlassShader.Depth := tbGlassDepth.Position / 100;
- lblGlassDepth.Caption := FloatToStrF(GlassShader.Depth, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGlassMixChange(Sender: TObject);
- begin
- GlassShader.Mix := tbGlassMix.Position / 100;
- lblGlassMix.Caption := FloatToStrF(GlassShader.Mix, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochAFactorChange(Sender: TObject);
- begin
- GoochShader.AmbientFactor := tbGoochAFactor.Position / 100;
- lblGoochAFactor.Caption := FloatToStrF(GoochShader.AmbientFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochAlphaChange(Sender: TObject);
- begin
- GoochShader.DiffuseColor.Alpha := tbGoochAlpha.Position / 100;
- lblGoochAlpha.Caption := FloatToStrF(GoochShader.DiffuseColor.Alpha,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochCFactorChange(Sender: TObject);
- begin
- GoochShader.CoolFactor := tbGoochCFactor.Position / 100;
- lblGoochCFactor.Caption := FloatToStrF(GoochShader.CoolFactor, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochDFactorChange(Sender: TObject);
- begin
- GoochShader.DiffuseFactor := tbGoochDFactor.Position / 100;
- lblGoochDFactor.Caption := FloatToStrF(GoochShader.DiffuseFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochSFactorChange(Sender: TObject);
- begin
- GoochShader.SpecularFactor := tbGoochSFactor.Position / 100;
- lblGoochSFactor.Caption := FloatToStrF(GoochShader.SpecularFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbGoochWFactorChange(Sender: TObject);
- begin
- GoochShader.WarmFactor := tbGoochWFactor.Position / 100;
- lblGoochWFactor.Caption := FloatToStrF(GoochShader.WarmFactor, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbLatticeLightPowerChange(Sender: TObject);
- begin
- LatticeShader.LightPower := tbLatticeLightPower.Position / 100;
- lblLatticeLightPower.Caption := FloatToStrF(LatticeShader.LightPower,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbLatticeScaleXChange(Sender: TObject);
- begin
- LatticeShader.LatticeScale.X := tbLatticeScaleX.Position;
- lblLatticeScaleX.Caption := FloatToStrF(LatticeShader.LatticeScale.X,
- ffFixed, 5, 0);
- end;
- procedure TFormShaderLab.tbLatticeScaleYChange(Sender: TObject);
- begin
- LatticeShader.LatticeScale.Y := tbLatticeScaleY.Position;
- lblLatticeScaleY.Caption := FloatToStrF(LatticeShader.LatticeScale.Y,
- ffFixed, 5, 0);
- end;
- procedure TFormShaderLab.tbLatticeSpecularPowerChange(Sender: TObject);
- begin
- LatticeShader.SpecularPower := tbLatticeSpecularPower.Position / 100;
- lblLatticeSpecularPower.Caption := FloatToStrF(LatticeShader.SpecularPower,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbLatticeThresholdXChange(Sender: TObject);
- begin
- LatticeShader.LatticeThreshold.X := tbLatticeThresholdX.Position / 100;
- lblLatticeThresholdX.Caption := FloatToStrF(LatticeShader.LatticeThreshold.X,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbLatticeThresholdYChange(Sender: TObject);
- begin
- LatticeShader.LatticeThreshold.Y := tbLatticeThresholdY.Position / 100;
- lblLatticeThresholdY.Caption := FloatToStrF(LatticeShader.LatticeThreshold.Y,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbSemAmbientFChange(Sender: TObject);
- begin
- SEMShader.AmbientFactor := tbSemAmbientF.Position / 100;
- lblSemAmbientF.Caption := FloatToStrF(SEMShader.AmbientFactor, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbSemDiffuseFChange(Sender: TObject);
- begin
- SEMShader.DiffuseFactor := tbSemDiffuseF.Position / 100;
- lblSemDiffuseF.Caption := FloatToStrF(SEMShader.DiffuseFactor, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbSemSpecularFChange(Sender: TObject);
- begin
- SEMShader.SpecularFactor := tbSemSpecularF.Position / 100;
- lblSemSpecularF.Caption := FloatToStrF(SEMShader.SpecularFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbToonHighlightSizeChange(Sender: TObject);
- begin
- ToonShader.HighlightSize := tbToonHighlightSize.Position / 100;
- lblToonHighlightSize.Caption := FloatToStrF(ToonShader.HighlightSize,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbToonMidSizeChange(Sender: TObject);
- begin
- ToonShader.MidSize := tbToonMidSize.Position / 100;
- lblToonMidSize.Caption := FloatToStrF(ToonShader.MidSize, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbToonOutlineWidthChange(Sender: TObject);
- begin
- ToonShader.OutlineWidth := tbToonOutlineWidth.Position / 100;
- lblToonOutlineWidth.Caption := FloatToStrF(ToonShader.OutlineWidth,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbToonShadowSizeChange(Sender: TObject);
- begin
- ToonShader.ShadowSize := tbToonShadowSize.Position / 100;
- lblToonShadowSize.Caption := FloatToStrF(ToonShader.ShadowSize,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDAmbientFChange(Sender: TObject);
- begin
- VertexDisplacementShader.AmbientFactor := tbVDAmbientF.Position / 100;
- lblVDAmbientF.Caption := FloatToStrF(VertexDisplacementShader.AmbientFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDDiffuseFChange(Sender: TObject);
- begin
- VertexDisplacementShader.DiffuseFactor := tbVDDiffuseF.Position / 100;
- lblVDDiffuseF.Caption := FloatToStrF(VertexDisplacementShader.DiffuseFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDDispScaleChange(Sender: TObject);
- begin
- VertexDisplacementShader.DisplacementScale := tbVDDispScale.Position / 100;
- lblVDDispScale.Caption :=
- FloatToStrF(VertexDisplacementShader.DisplacementScale, ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDNoiseChange(Sender: TObject);
- begin
- VertexDisplacementShader.NoiseFactor := tbVDNoise.Position / 100;
- lblVDNoise.Caption := FloatToStrF(VertexDisplacementShader.NoiseFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDNScaleChange(Sender: TObject);
- begin
- VertexDisplacementShader.NoiseScale := tbVDNScale.Position / 100;
- lblVDNScale.Caption := FloatToStrF(VertexDisplacementShader.NoiseScale,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDPeriodChange(Sender: TObject);
- begin
- VertexDisplacementShader.NoisePeriod := tbVDPeriod.Position / 100;
- lblVDPeriod.Caption := FloatToStrF(VertexDisplacementShader.NoisePeriod,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDSpecularFChange(Sender: TObject);
- begin
- VertexDisplacementShader.SpecularFactor := tbVDSpecularF.Position / 100;
- lblVDSpecularF.Caption := FloatToStrF(VertexDisplacementShader.SpecularFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDTimeFChange(Sender: TObject);
- begin
- VertexDisplacementShader.TimeFactor := tbVDTimeF.Position / 100;
- lblVDTimeF.Caption := FloatToStrF(VertexDisplacementShader.TimeFactor,
- ffFixed, 5, 3);
- end;
- procedure TFormShaderLab.tbVDTurbChange(Sender: TObject);
- begin
- VertexDisplacementShader.TurbulenceFactor := tbVDTurb.Position / 100;
- lblVDTurb.Caption := FloatToStrF(VertexDisplacementShader.TurbulenceFactor,
- ffFixed, 5, 3);
- end;
- end.
|