HighlightShaderCommand.lua 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. local HighlightShaderCommand = class('HighlightShaderCommand', framework.SimpleCommand)
  2. local HighlightGLKey = "ShaderHighlightColor_noMVP"
  3. local HighlightCoverGLKey = "ShaderHighlightCover_noMVP"
  4. local HighlightGoldenGLKey = "ShaderHighlightGoldenColor_noMVP"
  5. local CloneShadowGLKey = "ShaderCloneShadow_noMVP"
  6. local SlowGLKey = "ShaderSlowColor_noMVP"
  7. local OutlineGLKey = "ShaderOutlineColor_noMVP"
  8. local IceGLKey = "ShaderIceColor_noMVP"
  9. local BlurGLKey = "ShaderBlurGLKey_noMVP"
  10. local IceAlphaMulitipGLKEY = "ShaderIceAlphaMulitipColor_noMVP"
  11. function HighlightShaderCommand:ctor()
  12. end
  13. function HighlightShaderCommand:execute(notification)
  14. local node = notification:getBody()
  15. local type = notification:getType()
  16. if not node then
  17. return
  18. end
  19. local GL_P = nil
  20. if type == global.MMO.SHADER_TYPE_HIGHTLIGHT then
  21. GL_P = self:createHightLightShader()
  22. elseif type == global.MMO.SHADER_TYPE_HIGHTLIGHT_COVER then
  23. GL_P = self:createHightLightCoverShader()
  24. elseif type == global.MMO.SHADER_TYPE_GOLDEN then
  25. GL_P = self:createGoldenShader()
  26. elseif type == global.MMO.SHADER_TYPE_SHADOW then
  27. GL_P = self:createShadowShader()
  28. elseif type == global.MMO.SHADER_TYPE_SLOW then
  29. GL_P = self:createSlowShader()
  30. elseif type == global.MMO.SHADER_TYPE_OUTLINE then
  31. GL_P = self:createOutlineShader()
  32. elseif type == global.MMO.SHADER_TYPE_ICE then
  33. GL_P = self:createIceShader()
  34. elseif type == global.MMO.SHADER_TYPE_BLUR then
  35. GL_P = self:createBlurShader()
  36. elseif type == global.MMO.SHADER_TYPE_ICE_ALPHA_MULTIP then
  37. GL_P = self:createIceAlphaMulitipShader()
  38. else
  39. GL_P = self:createHightLightShader()
  40. end
  41. if GL_P then
  42. node:setGLProgram( GL_P )
  43. end
  44. end
  45. function HighlightShaderCommand:createHightLightShader()
  46. local GL_P = global.GLProgramCache:getGLProgram( HighlightGLKey )
  47. if not GL_P then
  48. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_color_nomvp.frag" )
  49. global.GLProgramCache:addGLProgram( GL_P, HighlightGLKey )
  50. end
  51. return GL_P
  52. end
  53. function HighlightShaderCommand:createHightLightCoverShader()
  54. local GL_P = global.GLProgramCache:getGLProgram( HighlightCoverGLKey )
  55. if not GL_P then
  56. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_cover_nomvp.frag" )
  57. global.GLProgramCache:addGLProgram( GL_P, HighlightCoverGLKey )
  58. end
  59. return GL_P
  60. end
  61. function HighlightShaderCommand:createGoldenShader()
  62. local GL_P = global.GLProgramCache:getGLProgram( HighlightGoldenGLKey )
  63. if not GL_P then
  64. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_golden_color_nomvp.frag" )
  65. global.GLProgramCache:addGLProgram( GL_P, HighlightGoldenGLKey )
  66. end
  67. return GL_P
  68. end
  69. function HighlightShaderCommand:createShadowShader()
  70. local GL_P = global.GLProgramCache:getGLProgram( CloneShadowGLKey )
  71. if not GL_P then
  72. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/shadow_blur.fsh" )
  73. global.GLProgramCache:addGLProgram( GL_P, CloneShadowGLKey )
  74. end
  75. return GL_P
  76. end
  77. function HighlightShaderCommand:createSlowShader()
  78. local GL_P = global.GLProgramCache:getGLProgram( SlowGLKey )
  79. if not GL_P then
  80. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/slow_color_nomvp.frag" )
  81. global.GLProgramCache:addGLProgram( GL_P, SlowGLKey )
  82. end
  83. return GL_P
  84. end
  85. function HighlightShaderCommand:createOutlineShader()
  86. local GL_P = global.GLProgramCache:getGLProgram( OutlineGLKey )
  87. if not GL_P then
  88. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_outline_color_nomvp.frag" )
  89. global.GLProgramCache:addGLProgram( GL_P, OutlineGLKey )
  90. end
  91. return GL_P
  92. end
  93. function HighlightShaderCommand:createIceShader()
  94. local GL_P = global.GLProgramCache:getGLProgram( IceGLKey )
  95. if not GL_P then
  96. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_ice_color_nomvp.frag" )
  97. global.GLProgramCache:addGLProgram( GL_P, IceGLKey )
  98. end
  99. return GL_P
  100. end
  101. function HighlightShaderCommand:createBlurShader()
  102. local GL_P = global.GLProgramCache:getGLProgram( BlurGLKey )
  103. if not GL_P then
  104. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_blur_color_nomvp.frag" )
  105. global.GLProgramCache:addGLProgram( GL_P, BlurGLKey )
  106. end
  107. return GL_P
  108. end
  109. function HighlightShaderCommand:createIceAlphaMulitipShader()
  110. local GL_P = global.GLProgramCache:getGLProgram( IceAlphaMulitipGLKEY )
  111. if not GL_P then
  112. GL_P = cc.GLProgram:createWithFilenames( "shader/position_texture_color_nomvp.vert", "shader/highlight_ice_alpha_mulitip_color_nomvp.frag" )
  113. global.GLProgramCache:addGLProgram( GL_P, IceGLKey )
  114. end
  115. return GL_P
  116. end
  117. return HighlightShaderCommand