TemplateModuleHelper.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788
  1. // Amplify Shader Editor - Visual Shader Editing Tool
  2. // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
  3. using System;
  4. using UnityEngine;
  5. namespace AmplifyShaderEditor
  6. {
  7. [Serializable]
  8. public class TemplateModulesHelper
  9. {
  10. [SerializeField]
  11. internal bool Foldout = false;
  12. private bool m_isDirty = false;
  13. [SerializeField]
  14. private TemplatesBlendModule m_blendOpHelper = new TemplatesBlendModule();
  15. [SerializeField]
  16. private TemplatesBlendModule m_blendOpHelper1 = new TemplatesBlendModule();
  17. [SerializeField]
  18. private TemplatesBlendModule m_blendOpHelper2 = new TemplatesBlendModule();
  19. [SerializeField]
  20. private TemplatesBlendModule m_blendOpHelper3 = new TemplatesBlendModule();
  21. [SerializeField]
  22. private TemplateAlphaToMaskModule m_alphaToMaskHelper = new TemplateAlphaToMaskModule();
  23. [SerializeField]
  24. private TemplateCullModeModule m_cullModeHelper = new TemplateCullModeModule();
  25. [SerializeField]
  26. private TemplateColorMaskModule m_colorMaskHelper = new TemplateColorMaskModule();
  27. [SerializeField]
  28. private TemplateColorMaskModule m_colorMaskHelper1 = new TemplateColorMaskModule();
  29. [SerializeField]
  30. private TemplateColorMaskModule m_colorMaskHelper2 = new TemplateColorMaskModule();
  31. [SerializeField]
  32. private TemplateColorMaskModule m_colorMaskHelper3 = new TemplateColorMaskModule();
  33. [SerializeField]
  34. private TemplatesStencilBufferModule m_stencilBufferHelper = new TemplatesStencilBufferModule();
  35. [SerializeField]
  36. private TemplateDepthModule m_depthOphelper = new TemplateDepthModule();
  37. [SerializeField]
  38. private TemplateTagsModule m_tagsHelper = new TemplateTagsModule();
  39. [SerializeField]
  40. private TemplateShaderModelModule m_shaderModelHelper = new TemplateShaderModelModule();
  41. [SerializeField]
  42. private TemplateAdditionalIncludesHelper m_additionalIncludes = new TemplateAdditionalIncludesHelper();
  43. [SerializeField]
  44. private TemplateAdditionalDefinesHelper m_additionalDefines = new TemplateAdditionalDefinesHelper();
  45. [SerializeField]
  46. private TemplateAdditionalPragmasHelper m_additionalPragmas = new TemplateAdditionalPragmasHelper();
  47. [SerializeField]
  48. private TemplateAdditionalDirectivesHelper m_additionalDirectives = new TemplateAdditionalDirectivesHelper(" Additional Directives");
  49. [SerializeField]
  50. private RenderingPlatformOpHelper m_renderingPlatforms = new RenderingPlatformOpHelper();
  51. [SerializeField]
  52. private bool m_hasValidData = false;
  53. [SerializeField]
  54. private bool m_allModulesMode = false;
  55. public void CopyFrom( TemplateModulesHelper other )
  56. {
  57. m_allModulesMode = other.AllModulesMode;
  58. if( other.BlendOpHelper.IsDirty )
  59. {
  60. m_blendOpHelper.CopyFrom( other.BlendOpHelper, true );
  61. }
  62. if( other.BlendOpHelper1.IsDirty )
  63. {
  64. m_blendOpHelper1.CopyFrom( other.BlendOpHelper1, true );
  65. }
  66. if( other.BlendOpHelper2.IsDirty )
  67. {
  68. m_blendOpHelper2.CopyFrom( other.BlendOpHelper2, true );
  69. }
  70. if( other.BlendOpHelper3.IsDirty )
  71. {
  72. m_blendOpHelper3.CopyFrom( other.BlendOpHelper3, true );
  73. }
  74. if( other.AlphaToMaskHelper.IsDirty )
  75. {
  76. m_alphaToMaskHelper.CopyFrom( other.AlphaToMaskHelper, true );
  77. }
  78. if( other.CullModeHelper.IsDirty )
  79. {
  80. m_cullModeHelper.CopyFrom( other.CullModeHelper , true );
  81. }
  82. if( other.ColorMaskHelper.IsDirty )
  83. {
  84. m_colorMaskHelper.CopyFrom( other.ColorMaskHelper , true);
  85. }
  86. if( other.ColorMaskHelper1.IsDirty )
  87. {
  88. m_colorMaskHelper1.CopyFrom( other.ColorMaskHelper1, true );
  89. }
  90. if( other.ColorMaskHelper2.IsDirty )
  91. {
  92. m_colorMaskHelper2.CopyFrom( other.ColorMaskHelper2, true );
  93. }
  94. if( other.ColorMaskHelper3.IsDirty )
  95. {
  96. m_colorMaskHelper3.CopyFrom( other.ColorMaskHelper3, true );
  97. }
  98. if( other.StencilBufferHelper.IsDirty )
  99. {
  100. m_stencilBufferHelper.CopyFrom( other.StencilBufferHelper,true );
  101. }
  102. if( other.DepthOphelper.IsDirty )
  103. {
  104. m_depthOphelper.CopyFrom( other.DepthOphelper,true );
  105. }
  106. if( other.TagsHelper.IsDirty )
  107. {
  108. m_tagsHelper.CopyFrom( other.TagsHelper );
  109. }
  110. if( other.ShaderModelHelper.IsDirty )
  111. {
  112. m_shaderModelHelper.CopyFrom( other.ShaderModelHelper, true );
  113. }
  114. }
  115. public void SyncWith( TemplateModulesHelper other )
  116. {
  117. if( m_blendOpHelper.ValidData && other.BlendOpHelper.ValidData )
  118. {
  119. m_blendOpHelper.CopyFrom( other.BlendOpHelper, false );
  120. }
  121. if( m_blendOpHelper1.ValidData && other.BlendOpHelper1.ValidData )
  122. {
  123. m_blendOpHelper1.CopyFrom( other.BlendOpHelper1, false );
  124. }
  125. if( m_blendOpHelper2.ValidData && other.BlendOpHelper2.ValidData )
  126. {
  127. m_blendOpHelper2.CopyFrom( other.BlendOpHelper2, false );
  128. }
  129. if( m_blendOpHelper3.ValidData && other.BlendOpHelper3.ValidData )
  130. {
  131. m_blendOpHelper3.CopyFrom( other.BlendOpHelper3, false );
  132. }
  133. if( m_alphaToMaskHelper.ValidData && other.AlphaToMaskHelper.ValidData )
  134. {
  135. m_alphaToMaskHelper.CopyFrom( other.AlphaToMaskHelper, false );
  136. }
  137. if( m_cullModeHelper.ValidData && other.CullModeHelper.ValidData )
  138. {
  139. m_cullModeHelper.CopyFrom( other.CullModeHelper, false );
  140. }
  141. if( m_colorMaskHelper.ValidData && other.ColorMaskHelper.ValidData )
  142. {
  143. m_colorMaskHelper.CopyFrom( other.ColorMaskHelper , false );
  144. }
  145. if( m_colorMaskHelper1.ValidData && other.ColorMaskHelper1.ValidData )
  146. {
  147. m_colorMaskHelper1.CopyFrom( other.ColorMaskHelper1, false );
  148. }
  149. if( m_colorMaskHelper2.ValidData && other.ColorMaskHelper2.ValidData )
  150. {
  151. m_colorMaskHelper2.CopyFrom( other.ColorMaskHelper2, false );
  152. }
  153. if( m_colorMaskHelper3.ValidData && other.ColorMaskHelper3.ValidData )
  154. {
  155. m_colorMaskHelper3.CopyFrom( other.ColorMaskHelper3, false );
  156. }
  157. if( m_stencilBufferHelper.ValidData && other.StencilBufferHelper.ValidData )
  158. {
  159. m_stencilBufferHelper.CopyFrom( other.StencilBufferHelper, false );
  160. }
  161. if( m_depthOphelper.ValidData && other.DepthOphelper.ValidData )
  162. {
  163. m_depthOphelper.CopyFrom( other.DepthOphelper, false );
  164. }
  165. if( m_shaderModelHelper.ValidData && other.ShaderModelHelper.ValidData )
  166. {
  167. m_shaderModelHelper.CopyFrom( other.ShaderModelHelper , false);
  168. }
  169. }
  170. public void FetchDataFromTemplate( TemplateModulesData module )
  171. {
  172. m_allModulesMode = module.AllModulesMode;
  173. if( module.PragmaTag.IsValid )
  174. {
  175. m_hasValidData = true;
  176. //m_additionalPragmas.IsValid = true;
  177. //m_additionalPragmas.FillNativeItems( module.IncludePragmaContainer.PragmasList );
  178. //m_additionalIncludes.IsValid = true;
  179. //m_additionalIncludes.FillNativeItems( module.IncludePragmaContainer.IncludesList );
  180. //m_additionalDefines.IsValid = true;
  181. //m_additionalDefines.FillNativeItems( module.IncludePragmaContainer.DefinesList );
  182. m_additionalDirectives.FillNativeItems( module.IncludePragmaContainer.NativeDirectivesList );
  183. m_additionalDirectives.IsValid = true;
  184. }
  185. else
  186. {
  187. //m_additionalPragmas.IsValid = false;
  188. //m_additionalIncludes.IsValid = false;
  189. //m_additionalDefines.IsValid = false;
  190. m_additionalDirectives.IsValid = false;
  191. }
  192. m_blendOpHelper.ConfigureFromTemplateData( module.BlendData );
  193. if( module.BlendData.DataCheck == TemplateDataCheck.Valid )
  194. {
  195. m_hasValidData = true;
  196. }
  197. m_blendOpHelper1.ConfigureFromTemplateData( module.BlendData1 );
  198. if( module.BlendData1.DataCheck == TemplateDataCheck.Valid )
  199. {
  200. m_hasValidData = true;
  201. }
  202. m_blendOpHelper2.ConfigureFromTemplateData( module.BlendData2 );
  203. if( module.BlendData2.DataCheck == TemplateDataCheck.Valid )
  204. {
  205. m_hasValidData = true;
  206. }
  207. m_blendOpHelper3.ConfigureFromTemplateData( module.BlendData3 );
  208. if( module.BlendData3.DataCheck == TemplateDataCheck.Valid )
  209. {
  210. m_hasValidData = true;
  211. }
  212. m_alphaToMaskHelper.ConfigureFromTemplateData( module.AlphaToMaskData );
  213. if( module.AlphaToMaskData.DataCheck == TemplateDataCheck.Valid )
  214. {
  215. m_hasValidData = true;
  216. }
  217. m_cullModeHelper.ConfigureFromTemplateData( module.CullModeData );
  218. if( module.CullModeData.DataCheck == TemplateDataCheck.Valid )
  219. {
  220. m_hasValidData = true;
  221. }
  222. m_colorMaskHelper.ConfigureFromTemplateData( module.ColorMaskData );
  223. if( module.ColorMaskData.DataCheck == TemplateDataCheck.Valid )
  224. {
  225. m_hasValidData = true;
  226. }
  227. m_colorMaskHelper1.ConfigureFromTemplateData( module.ColorMaskData1 );
  228. if( module.ColorMaskData1.DataCheck == TemplateDataCheck.Valid )
  229. {
  230. m_hasValidData = true;
  231. }
  232. m_colorMaskHelper2.ConfigureFromTemplateData( module.ColorMaskData2 );
  233. if( module.ColorMaskData2.DataCheck == TemplateDataCheck.Valid )
  234. {
  235. m_hasValidData = true;
  236. }
  237. m_colorMaskHelper3.ConfigureFromTemplateData( module.ColorMaskData3 );
  238. if( module.ColorMaskData3.DataCheck == TemplateDataCheck.Valid )
  239. {
  240. m_hasValidData = true;
  241. }
  242. m_stencilBufferHelper.ConfigureFromTemplateData( module.StencilData );
  243. if( module.StencilData.DataCheck == TemplateDataCheck.Valid )
  244. {
  245. m_hasValidData = true;
  246. }
  247. m_depthOphelper.ConfigureFromTemplateData( module.DepthData );
  248. if( module.DepthData.DataCheck == TemplateDataCheck.Valid )
  249. {
  250. m_hasValidData = true;
  251. }
  252. m_tagsHelper.ConfigureFromTemplateData( module.TagData );
  253. if( module.TagData.DataCheck == TemplateDataCheck.Valid )
  254. {
  255. m_hasValidData = true;
  256. }
  257. m_shaderModelHelper.ConfigureFromTemplateData( module.ShaderModel );
  258. if( module.ShaderModel.DataCheck == TemplateDataCheck.Valid )
  259. {
  260. m_hasValidData = true;
  261. }
  262. if( module.RenderPlatformHelper.IsValid )
  263. {
  264. m_renderingPlatforms.SetupFromTemplate( module.RenderPlatformHelper );
  265. m_hasValidData = true;
  266. }
  267. }
  268. public void OnLogicUpdate( TemplateModulesData currentModule )
  269. {
  270. if( currentModule.TagData.DataCheck == TemplateDataCheck.Valid )
  271. m_tagsHelper.OnLogicUpdate();
  272. }
  273. public void Draw( ParentNode owner, TemplateModulesData currentModule , TemplateModulesHelper parent = null )
  274. {
  275. if( currentModule.ShaderModel.DataCheck == TemplateDataCheck.Valid )
  276. m_shaderModelHelper.Draw( owner );
  277. m_isDirty = m_shaderModelHelper.IsDirty;
  278. if( currentModule.CullModeData.DataCheck == TemplateDataCheck.Valid )
  279. m_cullModeHelper.Draw( owner );
  280. m_isDirty = m_isDirty || m_cullModeHelper.IsDirty;
  281. if( currentModule.ColorMaskData.DataCheck == TemplateDataCheck.Valid )
  282. m_colorMaskHelper.Draw( owner );
  283. m_isDirty = m_isDirty || m_colorMaskHelper.IsDirty;
  284. if( currentModule.ColorMaskData1.DataCheck == TemplateDataCheck.Valid )
  285. m_colorMaskHelper1.Draw( owner );
  286. m_isDirty = m_isDirty || m_colorMaskHelper1.IsDirty;
  287. if( currentModule.ColorMaskData2.DataCheck == TemplateDataCheck.Valid )
  288. m_colorMaskHelper2.Draw( owner );
  289. m_isDirty = m_isDirty || m_colorMaskHelper2.IsDirty;
  290. if( currentModule.ColorMaskData3.DataCheck == TemplateDataCheck.Valid )
  291. m_colorMaskHelper3.Draw( owner );
  292. m_isDirty = m_isDirty || m_colorMaskHelper3.IsDirty;
  293. if( currentModule.AlphaToMaskData.DataCheck == TemplateDataCheck.Valid )
  294. m_alphaToMaskHelper.Draw( owner );
  295. m_isDirty = m_isDirty || m_alphaToMaskHelper.IsDirty;
  296. if( currentModule.DepthData.DataCheck == TemplateDataCheck.Valid )
  297. m_depthOphelper.Draw( owner, false );
  298. m_isDirty = m_isDirty || m_depthOphelper.IsDirty;
  299. if( currentModule.BlendData.DataCheck == TemplateDataCheck.Valid )
  300. m_blendOpHelper.Draw( owner, false );
  301. m_isDirty = m_isDirty || m_blendOpHelper.IsDirty;
  302. if( currentModule.BlendData1.DataCheck == TemplateDataCheck.Valid )
  303. m_blendOpHelper1.Draw( owner, false );
  304. m_isDirty = m_isDirty || m_blendOpHelper1.IsDirty;
  305. if( currentModule.BlendData2.DataCheck == TemplateDataCheck.Valid )
  306. m_blendOpHelper2.Draw( owner, false );
  307. m_isDirty = m_isDirty || m_blendOpHelper2.IsDirty;
  308. if( currentModule.BlendData3.DataCheck == TemplateDataCheck.Valid )
  309. m_blendOpHelper3.Draw( owner, false );
  310. m_isDirty = m_isDirty || m_blendOpHelper3.IsDirty;
  311. if( currentModule.StencilData.DataCheck == TemplateDataCheck.Valid )
  312. {
  313. CullMode cullMode = CullMode.Back;
  314. if( currentModule.CullModeData.DataCheck == TemplateDataCheck.Valid )
  315. {
  316. cullMode = m_cullModeHelper.CurrentCullMode;
  317. }
  318. else if( parent != null && parent.CullModeHelper.ValidData )
  319. {
  320. cullMode = parent.CullModeHelper.CurrentCullMode;
  321. }
  322. m_stencilBufferHelper.Draw( owner, cullMode, false );
  323. }
  324. m_isDirty = m_isDirty || m_stencilBufferHelper.IsDirty;
  325. if( currentModule.TagData.DataCheck == TemplateDataCheck.Valid )
  326. m_tagsHelper.Draw( owner, false );
  327. m_isDirty = m_isDirty || m_tagsHelper.IsDirty;
  328. if( currentModule.PragmaTag.IsValid )
  329. {
  330. //m_additionalDefines.Draw( owner );
  331. //m_additionalIncludes.Draw( owner );
  332. //m_additionalPragmas.Draw( owner );
  333. m_additionalDirectives.Draw( owner , false);
  334. }
  335. if( currentModule.RenderPlatformHelper.IsValid )
  336. {
  337. m_renderingPlatforms.DrawNested( owner );
  338. }
  339. m_isDirty = m_isDirty ||
  340. //m_additionalDefines.IsDirty ||
  341. //m_additionalIncludes.IsDirty ||
  342. //m_additionalPragmas.IsDirty ||
  343. m_additionalDirectives.IsDirty;
  344. }
  345. public void Destroy()
  346. {
  347. m_shaderModelHelper = null;
  348. m_blendOpHelper = null;
  349. m_blendOpHelper1 = null;
  350. m_blendOpHelper2 = null;
  351. m_blendOpHelper3 = null;
  352. m_cullModeHelper = null;
  353. m_alphaToMaskHelper = null;
  354. m_colorMaskHelper.Destroy();
  355. m_colorMaskHelper = null;
  356. m_colorMaskHelper1.Destroy();
  357. m_colorMaskHelper1 = null;
  358. m_colorMaskHelper2.Destroy();
  359. m_colorMaskHelper2 = null;
  360. m_colorMaskHelper3.Destroy();
  361. m_colorMaskHelper3 = null;
  362. m_stencilBufferHelper.Destroy();
  363. m_stencilBufferHelper = null;
  364. m_tagsHelper.Destroy();
  365. m_tagsHelper = null;
  366. m_additionalDefines.Destroy();
  367. m_additionalDefines = null;
  368. m_additionalIncludes.Destroy();
  369. m_additionalIncludes = null;
  370. m_additionalPragmas.Destroy();
  371. m_additionalPragmas = null;
  372. m_additionalDirectives.Destroy();
  373. m_additionalDirectives = null;
  374. m_renderingPlatforms.Destroy();
  375. m_renderingPlatforms = null;
  376. }
  377. public string GenerateAllModulesString( bool isSubShader )
  378. {
  379. string moduleBody = string.Empty;
  380. if( !ShaderModelHelper.IndependentModule )
  381. {
  382. moduleBody += ShaderModelHelper.GenerateShaderData( isSubShader ) + "\n";
  383. }
  384. if( !BlendOpHelper.IndependentModule )
  385. {
  386. if( BlendOpHelper.BlendModeEnabled )
  387. moduleBody += BlendOpHelper.CurrentBlendFactor + "\n";
  388. if( BlendOpHelper.BlendOpActive )
  389. moduleBody += BlendOpHelper.CurrentBlendOp + "\n";
  390. }
  391. if( !AlphaToMaskHelper.IndependentModule )
  392. moduleBody += AlphaToMaskHelper.GenerateShaderData( isSubShader ) + "\n";
  393. if( !CullModeHelper.IndependentModule )
  394. moduleBody += CullModeHelper.GenerateShaderData( isSubShader ) + "\n";
  395. if( !ColorMaskHelper.IndependentModule )
  396. moduleBody += ColorMaskHelper.GenerateShaderData( isSubShader ) + "\n";
  397. if( !DepthOphelper.IndependentModule )
  398. {
  399. moduleBody += DepthOphelper.CurrentZWriteMode;
  400. moduleBody += DepthOphelper.CurrentZTestMode;
  401. if( DepthOphelper.OffsetEnabled )
  402. moduleBody += DepthOphelper.CurrentOffset;
  403. }
  404. if( !StencilBufferHelper.IndependentModule && StencilBufferHelper.Active )
  405. {
  406. CullMode cullMode = ( CullModeHelper.ValidData ) ? CullModeHelper.CurrentCullMode : CullMode.Back;
  407. moduleBody += StencilBufferHelper.CreateStencilOp( cullMode );
  408. }
  409. return moduleBody;
  410. }
  411. public void ReadFromString( TemplateModulesData modulesData, ref uint index, ref string[] nodeParams )
  412. {
  413. try
  414. {
  415. m_blendOpHelper.ReadFromString( ref index, ref nodeParams );
  416. }
  417. catch( Exception e )
  418. {
  419. Debug.LogException( e );
  420. }
  421. if( UIUtils.CurrentShaderVersion() > 18103 )
  422. {
  423. try
  424. {
  425. m_blendOpHelper1.ReadFromString( ref index, ref nodeParams );
  426. }
  427. catch( Exception e )
  428. {
  429. Debug.LogException( e );
  430. }
  431. try
  432. {
  433. m_blendOpHelper2.ReadFromString( ref index, ref nodeParams );
  434. }
  435. catch( Exception e )
  436. {
  437. Debug.LogException( e );
  438. }
  439. try
  440. {
  441. m_blendOpHelper3.ReadFromString( ref index, ref nodeParams );
  442. }
  443. catch( Exception e )
  444. {
  445. Debug.LogException( e );
  446. }
  447. try
  448. {
  449. m_alphaToMaskHelper.ReadFromString( ref index, ref nodeParams );
  450. }
  451. catch( Exception e )
  452. {
  453. Debug.LogException( e );
  454. }
  455. }
  456. try
  457. {
  458. m_cullModeHelper.ReadFromString( ref index, ref nodeParams );
  459. }
  460. catch( Exception e )
  461. {
  462. Debug.LogException( e );
  463. }
  464. try
  465. {
  466. m_colorMaskHelper.ReadFromString( ref index, ref nodeParams );
  467. }
  468. catch( Exception e )
  469. {
  470. Debug.LogException( e );
  471. }
  472. if( UIUtils.CurrentShaderVersion() > 18103 )
  473. {
  474. try
  475. {
  476. m_colorMaskHelper1.ReadFromString( ref index, ref nodeParams );
  477. }
  478. catch( Exception e )
  479. {
  480. Debug.LogException( e );
  481. }
  482. try
  483. {
  484. m_colorMaskHelper2.ReadFromString( ref index, ref nodeParams );
  485. }
  486. catch( Exception e )
  487. {
  488. Debug.LogException( e );
  489. }
  490. try
  491. {
  492. m_colorMaskHelper3.ReadFromString( ref index, ref nodeParams );
  493. }
  494. catch( Exception e )
  495. {
  496. Debug.LogException( e );
  497. }
  498. }
  499. try
  500. {
  501. m_stencilBufferHelper.ReadFromString( ref index, ref nodeParams );
  502. }
  503. catch( Exception e )
  504. {
  505. Debug.LogException( e );
  506. }
  507. try
  508. {
  509. m_depthOphelper.ReadFromString( ref index, ref nodeParams );
  510. }
  511. catch( Exception e )
  512. {
  513. Debug.LogException( e );
  514. }
  515. try
  516. {
  517. m_tagsHelper.ReadFromString( ref index, ref nodeParams );
  518. }
  519. catch( Exception e )
  520. {
  521. Debug.LogException( e );
  522. }
  523. try
  524. {
  525. m_shaderModelHelper.ReadFromString( modulesData, ref index, ref nodeParams );
  526. }
  527. catch( Exception e )
  528. {
  529. Debug.LogException( e );
  530. }
  531. if( UIUtils.CurrentShaderVersion() > 18910 )
  532. {
  533. try
  534. {
  535. m_renderingPlatforms.ReadFromStringTemplate( ref index , ref nodeParams );
  536. }
  537. catch(Exception e)
  538. {
  539. Debug.Log( e );
  540. }
  541. }
  542. if( UIUtils.CurrentShaderVersion() < 15312 )
  543. {
  544. try
  545. {
  546. m_additionalDefines.ReadFromString( ref index, ref nodeParams );
  547. }
  548. catch( Exception e )
  549. {
  550. Debug.LogException( e );
  551. }
  552. try
  553. {
  554. m_additionalPragmas.ReadFromString( ref index, ref nodeParams );
  555. }
  556. catch( Exception e )
  557. {
  558. Debug.LogException( e );
  559. }
  560. try
  561. {
  562. m_additionalIncludes.ReadFromString( ref index, ref nodeParams );
  563. }
  564. catch( Exception e )
  565. {
  566. Debug.LogException( e );
  567. }
  568. m_additionalDirectives.AddItems( AdditionalLineType.Include, m_additionalIncludes.ItemsList );
  569. m_additionalDirectives.AddItems( AdditionalLineType.Define, m_additionalDefines.ItemsList );
  570. m_additionalDirectives.AddItems( AdditionalLineType.Pragma, m_additionalPragmas.ItemsList );
  571. }
  572. else
  573. {
  574. try
  575. {
  576. m_additionalDirectives.ReadFromString( ref index, ref nodeParams );
  577. }
  578. catch( Exception e )
  579. {
  580. Debug.LogException( e );
  581. }
  582. }
  583. }
  584. public void WriteToString( ref string nodeInfo )
  585. {
  586. m_blendOpHelper.WriteToString( ref nodeInfo );
  587. m_blendOpHelper1.WriteToString( ref nodeInfo );
  588. m_blendOpHelper2.WriteToString( ref nodeInfo );
  589. m_blendOpHelper3.WriteToString( ref nodeInfo );
  590. m_alphaToMaskHelper.WriteToString( ref nodeInfo );
  591. m_cullModeHelper.WriteToString( ref nodeInfo );
  592. m_colorMaskHelper.WriteToString( ref nodeInfo );
  593. m_colorMaskHelper1.WriteToString( ref nodeInfo );
  594. m_colorMaskHelper2.WriteToString( ref nodeInfo );
  595. m_colorMaskHelper3.WriteToString( ref nodeInfo );
  596. m_stencilBufferHelper.WriteToString( ref nodeInfo );
  597. m_depthOphelper.WriteToString( ref nodeInfo );
  598. m_tagsHelper.WriteToString( ref nodeInfo );
  599. m_shaderModelHelper.WriteToString( ref nodeInfo );
  600. m_renderingPlatforms.WriteToStringTemplate( ref nodeInfo );
  601. //m_additionalDefines.WriteToString( ref nodeInfo );
  602. //m_additionalPragmas.WriteToString( ref nodeInfo );
  603. //m_additionalIncludes.WriteToString( ref nodeInfo );
  604. m_additionalDirectives.WriteToString( ref nodeInfo );
  605. }
  606. public TemplatesBlendModule BlendOpHelper { get { return m_blendOpHelper; } }
  607. public TemplatesBlendModule BlendOpHelper1 { get { return m_blendOpHelper1; } }
  608. public TemplatesBlendModule BlendOpHelper2 { get { return m_blendOpHelper2; } }
  609. public TemplatesBlendModule BlendOpHelper3 { get { return m_blendOpHelper3; } }
  610. public TemplateAlphaToMaskModule AlphaToMaskHelper { get { return m_alphaToMaskHelper; } }
  611. public TemplateCullModeModule CullModeHelper { get { return m_cullModeHelper; } }
  612. public TemplateColorMaskModule ColorMaskHelper { get { return m_colorMaskHelper; } }
  613. public TemplateColorMaskModule ColorMaskHelper1 { get { return m_colorMaskHelper1; } }
  614. public TemplateColorMaskModule ColorMaskHelper2 { get { return m_colorMaskHelper2; } }
  615. public TemplateColorMaskModule ColorMaskHelper3 { get { return m_colorMaskHelper3; } }
  616. public TemplatesStencilBufferModule StencilBufferHelper { get { return m_stencilBufferHelper; } }
  617. public TemplateDepthModule DepthOphelper { get { return m_depthOphelper; } }
  618. public TemplateTagsModule TagsHelper { get { return m_tagsHelper; } }
  619. public TemplateShaderModelModule ShaderModelHelper { get { return m_shaderModelHelper; } }
  620. //public TemplateAdditionalIncludesHelper AdditionalIncludes { get { return m_additionalIncludes; } }
  621. //public TemplateAdditionalDefinesHelper AdditionalDefines { get { return m_additionalDefines; } }
  622. //public TemplateAdditionalPragmasHelper AdditionalPragmas { get { return m_additionalPragmas; } }
  623. public TemplateAdditionalDirectivesHelper AdditionalDirectives { get { return m_additionalDirectives; } }
  624. public RenderingPlatformOpHelper RenderingPlatforms { get { return m_renderingPlatforms; } }
  625. public bool AllModulesMode { get { return m_allModulesMode; } }
  626. public bool HasValidData { get { return m_hasValidData; } }
  627. public bool IsDirty
  628. {
  629. get { return m_isDirty; }
  630. set
  631. {
  632. m_isDirty = value;
  633. if( !value )
  634. {
  635. m_blendOpHelper.IsDirty = false;
  636. m_blendOpHelper1.IsDirty = false;
  637. m_blendOpHelper2.IsDirty = false;
  638. m_blendOpHelper3.IsDirty = false;
  639. m_cullModeHelper.IsDirty = false;
  640. m_alphaToMaskHelper.IsDirty = false;
  641. m_colorMaskHelper.IsDirty = false;
  642. m_colorMaskHelper1.IsDirty = false;
  643. m_colorMaskHelper2.IsDirty = false;
  644. m_colorMaskHelper3.IsDirty = false;
  645. m_stencilBufferHelper.IsDirty = false;
  646. m_tagsHelper.IsDirty = false;
  647. m_shaderModelHelper.IsDirty = false;
  648. //m_additionalDefines.IsDirty = false;
  649. //m_additionalPragmas.IsDirty = false;
  650. //m_additionalIncludes.IsDirty = false;
  651. m_additionalDirectives.IsDirty = false;
  652. }
  653. }
  654. }
  655. // public bool Foldout { get { return m_foldout; } set { m_foldout = value; } }
  656. }
  657. }