Unit1.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <tchar.h>
  4. #pragma hdrstop
  5. #include "Unit1.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "GLS.BaseClasses"
  9. #pragma link "GLS.Cadencer"
  10. #pragma link "GLS.Coordinates"
  11. #pragma link "GLS.Graph"
  12. #pragma link "GLS.Material"
  13. #pragma link "GLS.Objects"
  14. #pragma link "GLS.Scene"
  15. #pragma link "GLS.SimpleNavigation"
  16. #pragma link "GLS.VectorFileObjects"
  17. #pragma link "GLS.SceneViewer"
  18. #pragma link "GLS.FileMD2"
  19. #pragma link "GLS.File3DS"
  20. #pragma link "GLSL.cgBombShader"
  21. #pragma resource "*.dfm"
  22. TForm1 *Form1;
  23. //---------------------------------------------------------------------------
  24. __fastcall TForm1::TForm1(TComponent* Owner)
  25. : TForm(Owner)
  26. {
  27. }
  28. void __fastcall TForm1::ResetPositions()
  29. {
  30. TrackBar1->Position = InterpolateCombinedSafe(0.01, 10, MyShader->Displacement, 0, 100, 1, itLinear);
  31. TrackBar2->Position = InterpolateCombinedSafe(-0.13, 10, MyShader->Sharpness, 0, 100, 1, itLinear);
  32. TrackBar3->Position = InterpolateCombinedSafe(0.01, 6, MyShader->ColorSharpness, 0, 100, 1, itLinear);
  33. TrackBar4->Position = InterpolateCombinedSafe(0.1, 1, MyShader->Speed, 0, 100, 1, itLinear);
  34. TrackBar5->Position = InterpolateCombinedSafe(0.01, 8, MyShader->TurbDensity, 0, 100, 1, itLinear);
  35. TrackBar6->Position = InterpolateCombinedSafe(-0.5, 0.5, MyShader->ColorRange, 0, 100, 1, itLinear);
  36. TrackBar7->Position = InterpolateCombinedSafe(0, 1, MyShader->Alpha, 0, 100, 1, itLinear);
  37. TrackBar8->Position = InterpolateCombinedSafe(0, 2, MyShader->MainTextureShare, 0, 100, 1, itLinear);
  38. TrackBar9->Position = InterpolateCombinedSafe(0, 2, MyShader->GradientTextureShare, 0, 100, 1, itLinear);
  39. }
  40. //---------------------------------------------------------------------------
  41. void __fastcall TForm1::FormCreate(TObject *Sender)
  42. {
  43. // First load models from media directory
  44. SetGLSceneMediaDir();
  45. GLActor1->LoadFromFile("waste.md2"); //Fighter
  46. GLActor1->SwitchToAnimation(0, True);
  47. GLActor1->AnimationMode = aamLoop;
  48. GLActor1->Scale->Scale(0.05);
  49. ffTeapot->LoadFromFile("Teapot.3ds");
  50. ffSphere1->LoadFromFile("Sphere_little.3DS");
  51. ffSphere2->LoadFromFile("Sphere_big.3DS");
  52. ffSphere2->Scale->Scale(20);
  53. GLMaterialLibrary1->LibMaterialByName("marbles1")->
  54. Material->Texture->Image->LoadFromFile("beigemarble.jpg");
  55. GLMaterialLibrary1->LibMaterialByName("marbles2")->
  56. Material->Texture->Image->LoadFromFile("marbletiles.jpg");
  57. GLMaterialLibrary1->LibMaterialByName("snow")->
  58. Material->Texture->Image->LoadFromFile("snow512.jpg");
  59. GLMaterialLibrary1->LibMaterialByName("Fire")->
  60. Material->Texture->Image->LoadFromFile("FireGrade.bmp");
  61. GLMaterialLibrary1->LibMaterialByName("FighterTexture")->
  62. Material->Texture->Image->LoadFromFile("waste.jpg");
  63. MyShader = new TCgBombShader(this);
  64. MyShader->MainTexture = GLMaterialLibrary1->LibMaterialByName("FighterTexture")->Material->Texture;
  65. MyShader->Cadencer = GLCadencer1;
  66. // All models are linked with this material
  67. GLMaterialLibrary1->LibMaterialByName("LibMaterial")->Shader = MyShader;
  68. ResetPositions();
  69. ComboBox1Change(Sender);
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TForm1::ComboBox1Change(TObject *Sender)
  73. {
  74. MyShader->GradientTexture = GLMaterialLibrary1->LibMaterialByName(ComboBox1->Text)->Material->Texture;
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TForm1::CheckBox1Click(TObject *Sender)
  78. {
  79. GLActor1->Visible = CheckBox1->Checked;
  80. ffTeapot->Visible = CheckBox2->Checked;
  81. ffSphere1->Visible = CheckBox3->Checked;
  82. ffSphere2->Visible = CheckBox4->Checked;
  83. }
  84. //---------------------------------------------------------------------------
  85. void __fastcall TForm1::TrackBar1Change(TObject *Sender)
  86. {
  87. if (MyShader == NULL)
  88. exit;
  89. MyShader->Displacement = InterpolateCombinedSafe(0, 100, TrackBar1->Position, 0.01, 10, 1, itLinear);
  90. }
  91. //---------------------------------------------------------------------------
  92. void __fastcall TForm1::TrackBar2Change(TObject *Sender)
  93. {
  94. MyShader->Sharpness = InterpolateCombinedSafe(0, 100, TrackBar2->Position, -0.13, 10, 1, itLinear);
  95. }
  96. //---------------------------------------------------------------------------
  97. void __fastcall TForm1::TrackBar3Change(TObject *Sender)
  98. {
  99. MyShader->ColorSharpness = InterpolateCombinedSafe(0, 100, TrackBar3->Position, 0.01, 6, 1, itLinear);
  100. }
  101. //---------------------------------------------------------------------------
  102. void __fastcall TForm1::TrackBar4Change(TObject *Sender)
  103. {
  104. MyShader->Speed = InterpolateCombinedSafe(0, 100, TrackBar4->Position, 0.1, 1, 1, itLinear);
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TForm1::TrackBar5Change(TObject *Sender)
  108. {
  109. MyShader->TurbDensity = InterpolateCombinedSafe(0, 100, TrackBar5->Position, 0.1, 8, 1, itLinear);
  110. }
  111. //---------------------------------------------------------------------------
  112. void __fastcall TForm1::TrackBar6Change(TObject *Sender)
  113. {
  114. MyShader->ColorRange = InterpolateCombinedSafe(0, 100, TrackBar6->Position, -0.5, 0.5, 1, itLinear);
  115. }
  116. //---------------------------------------------------------------------------
  117. void __fastcall TForm1::TrackBar7Change(TObject *Sender)
  118. {
  119. MyShader->Alpha = InterpolateCombinedSafe(0, 100, TrackBar7->Position, 0, 1, 1, itLinear);
  120. }
  121. //---------------------------------------------------------------------------
  122. void __fastcall TForm1::TrackBar8Change(TObject *Sender)
  123. {
  124. MyShader->MainTextureShare = InterpolateCombinedSafe(0, 100, TrackBar8->Position, 0, 2, 1, itLinear);
  125. }
  126. //---------------------------------------------------------------------------
  127. void __fastcall TForm1::TrackBar9Change(TObject *Sender)
  128. {
  129. MyShader->GradientTextureShare = InterpolateCombinedSafe(0, 100, TrackBar9->Position, 0, 2, 1, itLinear);
  130. }
  131. //---------------------------------------------------------------------------
  132. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  133. const double newTime)
  134. {
  135. GLSceneViewer1->Invalidate();
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TForm1::ShaderEnabledCheckBoxClick(TObject *Sender)
  139. {
  140. MyShader->Enabled = ShaderEnabledCheckBox->Checked;
  141. }
  142. //---------------------------------------------------------------------------