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