BsBuiltinEditorResources.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsGUISkin.h"
  4. #include "BsModule.h"
  5. #include "BsApplication.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_ED_EXPORT BuiltinEditorResources : public BansheeEngine::Module<BuiltinEditorResources>
  9. {
  10. public:
  11. BuiltinEditorResources(RenderSystemPlugin activeRSPlugin);
  12. const GUISkin& getSkin() const { return mSkin; }
  13. /**
  14. * @brief Creates a material used for docking drop overlay used by the editor.
  15. */
  16. HMaterial createDockDropOverlayMaterial() const;
  17. /**
  18. * @brief Creates a material used for rendering the scene grid.
  19. */
  20. HMaterial createSceneGridMaterial() const;
  21. /**
  22. * @brief Creates a material used for picking non-transparent objects in scene view.
  23. */
  24. HMaterial createPicking(CullingMode cullMode) const;
  25. /**
  26. * @brief Creates a material used for picking transparent objects in scene view.
  27. */
  28. HMaterial createPickingAlpha(CullingMode cullMode) const;
  29. /**
  30. * @brief Creates a material used for rendering wireframe gizmos.
  31. */
  32. HMaterial createWireGizmoMat() const;
  33. /**
  34. * @brief Creates a material used for rendering solid gizmos.
  35. */
  36. HMaterial createSolidGizmoMat() const;
  37. /**
  38. * @brief Creates a material used for rendering icon gizmos.
  39. */
  40. HMaterial createIconGizmoMat() const;
  41. /**
  42. * @brief Creates a material used for picking non-transparent gizmos.
  43. */
  44. HMaterial createGizmoPickingMat() const;
  45. /**
  46. * @brief Creates a material used for picking transparent gizmos.
  47. */
  48. HMaterial createAlphaGizmoPickingMat() const;
  49. /**
  50. * @brief Creates a material used for rendering wireframe handles.
  51. */
  52. HMaterial createWireHandleMat() const;
  53. /**
  54. * @brief Creates a material used for rendering solid handles.
  55. */
  56. HMaterial createSolidHandleMat() const;
  57. static const String ObjectFieldStyleName;
  58. static const String ObjectFieldLabelStyleName;
  59. static const String ObjectFieldDropBtnStyleName;
  60. static const String ObjectFieldClearBtnStyleName;
  61. private:
  62. /**
  63. * @brief Imports all necessary resources and converts them to engine-ready format.
  64. *
  65. * @note Normally you only want to use this during development phase and then ship
  66. * with engine-ready format only.
  67. */
  68. void preprocess();
  69. /**
  70. * @brief Loads a GUI skin texture with the specified filename.
  71. */
  72. static HSpriteTexture getGUITexture(const WString& name);
  73. /**
  74. * @brief Loads a GPU program with the specified filename.
  75. */
  76. HGpuProgram getGpuProgram(const WString& name);
  77. /**
  78. * @brief Imports a GUI skin texture with the specified filename.
  79. * Saves the imported texture in engine-ready format in the corresponding
  80. * output folder.
  81. */
  82. static void importGUITexture(const WString& name);
  83. /**
  84. * @brief Loads and compiles a shader for dock overlay rendering.
  85. */
  86. void initDockDropOverlayShader();
  87. /**
  88. * @brief Loads and compiles a shader for scene grid rendering.
  89. */
  90. void initSceneGridShader();
  91. /**
  92. * @brief Loads and compiles a shader used for scene picking (non alpha).
  93. */
  94. void initPickingShader(CullingMode cullMode);
  95. /**
  96. * @brief Loads and compiles a shader used for scene picking (alpha).
  97. */
  98. void initPickingAlphaShader(CullingMode cullMode);
  99. /**
  100. * @brief Loads and compiles a shader used for rendering wireframe gizmos.
  101. */
  102. void initWireGizmoShader();
  103. /**
  104. * @brief Loads and compiles a shader used for rendering solid gizmos.
  105. */
  106. void initSolidGizmoShader();
  107. /**
  108. * @brief Loads and compiles a shader used for rendering icon gizmos.
  109. */
  110. void initIconGizmoShader();
  111. /**
  112. * @brief Loads and compiles a shader used for scene picking of non-transparent gizmos.
  113. */
  114. void initGizmoPickingShader();
  115. /**
  116. * @brief Loads and compiles a shader used for scene picking of possibly transparent gizmos.
  117. */
  118. void initGizmoPickingAlphaShader();
  119. /**
  120. * @brief Loads and compiles a shader used for rendering wireframe handles.
  121. */
  122. void initWireHandleShader();
  123. /**
  124. * @brief Loads and compiles a shader used for rendering solid handles.
  125. */
  126. void initSolidHandleShader();
  127. RenderSystemPlugin mRenderSystemPlugin;
  128. WString mActiveShaderSubFolder;
  129. String mActiveRenderSystem;
  130. HShader mShaderDockOverlay;
  131. HShader mShaderSceneGrid;
  132. HShader mShaderPicking[3];
  133. HShader mShaderPickingAlpha[3];
  134. HShader mShaderGizmoSolid;
  135. HShader mShaderGizmoWire;
  136. HShader mShaderGizmoIcon;
  137. HShader mShaderGizmoPicking;
  138. HShader mShaderGizmoAlphaPicking;
  139. HShader mShaderHandleSolid;
  140. HShader mShaderHandleWire;
  141. GUISkin mSkin;
  142. static const Path DefaultSkinFolder;
  143. static const Path DefaultSkinFolderRaw;
  144. static const Path DefaultShaderFolder;
  145. static const Path DefaultShaderFolderRaw;
  146. static const WString HLSL11ShaderSubFolder;
  147. static const WString HLSL9ShaderSubFolder;
  148. static const WString GLSLShaderSubFolder;
  149. static const WString DefaultFontFilename;
  150. static const UINT32 DefaultFontSize;
  151. static const WString WindowBackgroundTexture;
  152. static const WString WindowFrameNormal;
  153. static const WString WindowFrameFocused;
  154. static const WString WindowTitleBarBg;
  155. static const WString WindowCloseButtonNormal;
  156. static const WString WindowCloseButtonHover;
  157. static const WString WindowMinButtonNormal;
  158. static const WString WindowMinButtonHover;
  159. static const WString WindowMaxButtonNormal;
  160. static const WString WindowMaxButtonHover;
  161. static const WString TabbedBarBtnNormal;
  162. static const WString TabbedBarBtnActive;
  163. static const WString ButtonNormalTex;
  164. static const WString ButtonHoverTex;
  165. static const WString ButtonActiveTex;
  166. static const WString ToggleNormalTex;
  167. static const WString ToggleHoverTex;
  168. static const WString ToggleActiveTex;
  169. static const WString ToggleNormalOnTex;
  170. static const WString ToggleHoverOnTex;
  171. static const WString ToggleActiveOnTex;
  172. static const WString ObjectDropBtnNormalTex;
  173. static const WString ObjectDropBtnNormalOnTex;
  174. static const WString ObjectClearBtnNormalTex;
  175. static const WString ObjectClearBtnHoverTex;
  176. static const WString ObjectClearBtnActiveTex;
  177. static const WString FoldoutOpenNormalTex;
  178. static const WString FoldoutOpenHoverTex;
  179. static const WString FoldoutClosedNormalTex;
  180. static const WString FoldoutClosedHoverTex;
  181. static const WString CmpFoldoutOpenNormalTex;
  182. static const WString CmpFoldoutOpenHoverTex;
  183. static const WString CmpFoldoutOpenActiveTex;
  184. static const WString CmpFoldoutClosedNormalTex;
  185. static const WString CmpFoldoutClosedHoverTex;
  186. static const WString CmpFoldoutClosedActiveTex;
  187. static const WString InputBoxNormalTex;
  188. static const WString InputBoxHoverTex;
  189. static const WString InputBoxFocusedTex;
  190. static const WString ScrollBarUpNormalTex;
  191. static const WString ScrollBarUpHoverTex;
  192. static const WString ScrollBarUpActiveTex;
  193. static const WString ScrollBarDownNormalTex;
  194. static const WString ScrollBarDownHoverTex;
  195. static const WString ScrollBarDownActiveTex;
  196. static const WString ScrollBarLeftNormalTex;
  197. static const WString ScrollBarLeftHoverTex;
  198. static const WString ScrollBarLeftActiveTex;
  199. static const WString ScrollBarRightNormalTex;
  200. static const WString ScrollBarRightHoverTex;
  201. static const WString ScrollBarRightActiveTex;
  202. static const WString ScrollBarHandleHorzNormalTex;
  203. static const WString ScrollBarHandleHorzHoverTex;
  204. static const WString ScrollBarHandleHorzActiveTex;
  205. static const WString ScrollBarHandleVertNormalTex;
  206. static const WString ScrollBarHandleVertHoverTex;
  207. static const WString ScrollBarHandleVertActiveTex;
  208. static const WString ScrollBarBgTex;
  209. static const WString DropDownBtnNormalTex;
  210. static const WString DropDownBtnHoverTex;
  211. static const WString DropDownBoxBgTex;
  212. static const WString DropDownBoxEntryNormalTex;
  213. static const WString DropDownBoxEntryHoverTex;
  214. static const WString DropDownBoxBtnUpNormalTex;
  215. static const WString DropDownBoxBtnUpHoverTex;
  216. static const WString DropDownBoxBtnDownNormalTex;
  217. static const WString DropDownBoxBtnDownHoverTex;
  218. static const WString DropDownBoxEntryExpNormalTex;
  219. static const WString DropDownBoxEntryExpHoverTex;
  220. static const WString DropDownSeparatorTex;
  221. static const WString DropDownBoxBtnUpArrowTex;
  222. static const WString DropDownBoxBtnDownArrowTex;
  223. static const WString MenuBarBgTex;
  224. static const WString MenuBarBtnNormalTex;
  225. static const WString MenuBarBtnHoverTex;
  226. static const WString MenuBarBansheeLogoTex;
  227. static const WString DockSliderNormalTex;
  228. static const WString TreeViewExpandButtonOffNormal;
  229. static const WString TreeViewExpandButtonOffHover;
  230. static const WString TreeViewExpandButtonOnNormal;
  231. static const WString TreeViewExpandButtonOnHover;
  232. static const WString TreeViewSelectionBackground;
  233. static const WString TreeViewEditBox;
  234. static const WString TreeViewElementHighlight;
  235. static const WString TreeViewElementSepHighlight;
  236. static const WString ColorPickerSliderHorzHandleTex;
  237. static const WString ColorPickerSliderVertHandleTex;
  238. static const WString ColorPickerSlider2DHandleTex;
  239. static const WString ProgressBarFillTex;
  240. static const WString ProgressBarBgTex;
  241. static const WString ShaderDockOverlayVSFile;
  242. static const WString ShaderDockOverlayPSFile;
  243. static const WString SceneGridVSFile;
  244. static const WString SceneGridPSFile;
  245. static const WString PickingVSFile;
  246. static const WString PickingPSFile;
  247. static const WString PickingAlphaVSFile;
  248. static const WString PickingAlphaPSFile;
  249. static const WString ShaderWireGizmoVSFile;
  250. static const WString ShaderWireGizmoPSFile;
  251. static const WString ShaderSolidGizmoVSFile;
  252. static const WString ShaderSolidGizmoPSFile;
  253. static const WString ShaderIconGizmo0VSFile;
  254. static const WString ShaderIconGizmo0PSFile;
  255. static const WString ShaderIconGizmo1VSFile;
  256. static const WString ShaderIconGizmo1PSFile;
  257. static const WString GizmoPickingVSFile;
  258. static const WString GizmoPickingPSFile;
  259. static const WString GizmoPickingAlphaVSFile;
  260. static const WString GizmoPickingAlphaPSFile;
  261. };
  262. }