fCgBombShaderC.cpp 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <tchar.h>
  4. #pragma hdrstop
  5. #include "fCgBombShaderC.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 "GLS.CgShader"
  21. #pragma link "GLS.CgBombShader"
  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 = InterpolateCombinedSafe(0.01, 10, MyShader->Displacement, 0, 100, 1, itLinear);
  32. TrackBar2->Position = InterpolateCombinedSafe(-0.13, 10, MyShader->Sharpness, 0, 100, 1, itLinear);
  33. TrackBar3->Position = InterpolateCombinedSafe(0.01, 6, MyShader->ColorSharpness, 0, 100, 1, itLinear);
  34. TrackBar4->Position = InterpolateCombinedSafe(0.1, 1, MyShader->Speed, 0, 100, 1, itLinear);
  35. TrackBar5->Position = InterpolateCombinedSafe(0.01, 8, MyShader->TurbDensity, 0, 100, 1, itLinear);
  36. TrackBar6->Position = InterpolateCombinedSafe(-0.5, 0.5, MyShader->ColorRange, 0, 100, 1, itLinear);
  37. TrackBar7->Position = InterpolateCombinedSafe(0, 1, MyShader->Alpha, 0, 100, 1, itLinear);
  38. TrackBar8->Position = InterpolateCombinedSafe(0, 2, MyShader->MainTextureShare, 0, 100, 1, itLinear);
  39. TrackBar9->Position = InterpolateCombinedSafe(0, 2, MyShader->GradientTextureShare, 0, 100, 1, itLinear);
  40. }
  41. //---------------------------------------------------------------------------
  42. void __fastcall TForm1::FormCreate(TObject *Sender)
  43. {
  44. // First load models from asset directory
  45. TFileName Path = GetCurrentAssetPath();
  46. // First loading static models from asset directory
  47. SetCurrentDir(Path + "\\model");
  48. ffTeapot->LoadFromFile("Teapot.3ds");
  49. ffSphere1->LoadFromFile("Sphere.3DS");
  50. ffSphere2->LoadFromFile("Sphere_big.3DS");
  51. ffSphere2->Scale->Scale(20);
  52. // Second load dynamic models with texture and animation
  53. SetCurrentDir(Path + "\\modelext");
  54. GLActor1->LoadFromFile("waste.md2"); //Fighter
  55. GLActor1->SwitchToAnimation(0, True);
  56. GLActor1->AnimationMode = aamLoop;
  57. GLActor1->Scale->Scale(0.05);
  58. GLMaterialLibrary1->LibMaterialByName("FighterTexture")->
  59. Material->Texture->Image->LoadFromFile("waste.jpg");
  60. // Next loading other textures
  61. SetCurrentDir(Path + "\\texture");
  62. GLMaterialLibrary1->LibMaterialByName("marbles1")->
  63. Material->Texture->Image->LoadFromFile("beigemarble.jpg");
  64. GLMaterialLibrary1->LibMaterialByName("marbles2")->
  65. Material->Texture->Image->LoadFromFile("marbletiles.jpg");
  66. GLMaterialLibrary1->LibMaterialByName("snow")->
  67. Material->Texture->Image->LoadFromFile("snow512.jpg");
  68. GLMaterialLibrary1->LibMaterialByName("Fire")->
  69. Material->Texture->Image->LoadFromFile("FireGrade.png");
  70. MyShader = new TCgBombShader(this);
  71. MyShader->MainTexture = GLMaterialLibrary1->LibMaterialByName("FighterTexture")->Material->Texture;
  72. MyShader->Cadencer = GLCadencer1;
  73. // All models are linked with this material
  74. GLMaterialLibrary1->LibMaterialByName("LibMaterial")->Shader = MyShader;
  75. ResetPositions();
  76. ComboBox1Change(Sender);
  77. }
  78. //---------------------------------------------------------------------------
  79. void __fastcall TForm1::ComboBox1Change(TObject *Sender)
  80. {
  81. MyShader->GradientTexture = GLMaterialLibrary1->LibMaterialByName(ComboBox1->Text)->Material->Texture;
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TForm1::CheckBox1Click(TObject *Sender)
  85. {
  86. GLActor1->Visible = CheckBox1->Checked;
  87. ffTeapot->Visible = CheckBox2->Checked;
  88. ffSphere1->Visible = CheckBox3->Checked;
  89. ffSphere2->Visible = CheckBox4->Checked;
  90. }
  91. //---------------------------------------------------------------------------
  92. void __fastcall TForm1::TrackBar1Change(TObject *Sender)
  93. {
  94. if (MyShader == NULL)
  95. exit;
  96. MyShader->Displacement = InterpolateCombinedSafe(0, 100, TrackBar1->Position, 0.01, 10, 1, itLinear);
  97. }
  98. //---------------------------------------------------------------------------
  99. void __fastcall TForm1::TrackBar2Change(TObject *Sender)
  100. {
  101. MyShader->Sharpness = InterpolateCombinedSafe(0, 100, TrackBar2->Position, -0.13, 10, 1, itLinear);
  102. }
  103. //---------------------------------------------------------------------------
  104. void __fastcall TForm1::TrackBar3Change(TObject *Sender)
  105. {
  106. MyShader->ColorSharpness = InterpolateCombinedSafe(0, 100, TrackBar3->Position, 0.01, 6, 1, itLinear);
  107. }
  108. //---------------------------------------------------------------------------
  109. void __fastcall TForm1::TrackBar4Change(TObject *Sender)
  110. {
  111. MyShader->Speed = InterpolateCombinedSafe(0, 100, TrackBar4->Position, 0.1, 1, 1, itLinear);
  112. }
  113. //---------------------------------------------------------------------------
  114. void __fastcall TForm1::TrackBar5Change(TObject *Sender)
  115. {
  116. MyShader->TurbDensity = InterpolateCombinedSafe(0, 100, TrackBar5->Position, 0.1, 8, 1, itLinear);
  117. }
  118. //---------------------------------------------------------------------------
  119. void __fastcall TForm1::TrackBar6Change(TObject *Sender)
  120. {
  121. MyShader->ColorRange = InterpolateCombinedSafe(0, 100, TrackBar6->Position, -0.5, 0.5, 1, itLinear);
  122. }
  123. //---------------------------------------------------------------------------
  124. void __fastcall TForm1::TrackBar7Change(TObject *Sender)
  125. {
  126. MyShader->Alpha = InterpolateCombinedSafe(0, 100, TrackBar7->Position, 0, 1, 1, itLinear);
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TForm1::TrackBar8Change(TObject *Sender)
  130. {
  131. MyShader->MainTextureShare = InterpolateCombinedSafe(0, 100, TrackBar8->Position, 0, 2, 1, itLinear);
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TForm1::TrackBar9Change(TObject *Sender)
  135. {
  136. MyShader->GradientTextureShare = InterpolateCombinedSafe(0, 100, TrackBar9->Position, 0, 2, 1, itLinear);
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  140. const double newTime)
  141. {
  142. GLSceneViewer1->Invalidate();
  143. }
  144. //---------------------------------------------------------------------------
  145. void __fastcall TForm1::ShaderEnabledCheckBoxClick(TObject *Sender)
  146. {
  147. MyShader->Enabled = ShaderEnabledCheckBox->Checked;
  148. }
  149. //---------------------------------------------------------------------------