|
|
- ShaderTools = ShaderTools or {}
- ShaderTools.List = {
- ["Alpha_shader"] = false,
- ["Gray_level_shader"] = false,
- ["Unlit_Texture_Mask"] = false,
- -- ["mb_flowalphablendmask_mask"] = false,
- -- ["mb_uvrolladd_culloff_mask"] = false,
- -- ["mb_uvrollalphablend_culloff_mask"] = false,
- -- ["ParticleAdd_mask"] = false,
- -- ["ParticleBlend_mask"] = false,
- -- ["ParticleAlphaBlend_mask"] = false,
- -- ["mb_uvrolladd_mask"] = false,
- -- ["mb_flowalphablendmaskui"] = false,
- -- ["Unlit-Texture-NoFog"] = false,
- -- ["Mask_ParticleAdd"] = false,
- -- ["Mask_ParticleAlphaBlend"] = false,
- -- ["mb_flowadd_add_mask"] = false,
- -- ["mb_alphablend_front_mask"] = false,
- -- ["MobileParticleAddNoFog"] = false,
- -- ["MobileParticleAlphaNoFog"] = false,
- -- ["ParticleAlphaBlendNoFog"] = false,
- -- ["Particle Add_NoFog"] = false,
-
- -- 摄像机特效
- ["ScreenEffect"] = false,
- ["BlurEffect"] = false,
- ["DualBlur"] = false,
- ["GrayImageShad"] = false,
- ["RadiusBlur"] = false,
- }
-
- ShaderTools.ReplaceData = {
- ["Mobile/Diffuse"] = {"Lightmap_Diffuse", 1900},
- ["Legacy Shaders/Transparent/Cutout/Diffuse"] = {"Lightmap_Cutout", 2450},
- ["Legacy Shaders/Transparent/Diffuse"] = {"Lightmap_Transparent", 2950},
- ["T4MShaders/ShaderModel2/Diffuse/T4M 4 Textures"] = {"CustomTerrain", 2500},
- }
-
-
- ShaderTools.SceneMaterial = {}
-
- ShaderTools.TMPSharedMaterialType = {
- --HKYTW7字体
- HKYTW7FFDefault = "HKYTW7SDFDefault", --无字体特效
- HKYTW7OutlineBlueTab = "HKYTW7SDFOutlineBlueTab", --蓝色标签
- HKYTW7OutlineDarkBlueBtn = "HKYTW7SDFOutlineDarkBlueBtn", --蓝色按钮
- HKYTW7OutlineBrightBlueTitle = "HKYTW7SDFOutlineBrightBlueTitle", --蓝色标题
- HKYTW7OutlineOrangeTab = "HKYTW7SDFOutlineOrangeTab", --橙色标签
- HKYTW7OutlineDarkOrangeBtn = "HKYTW7SDFOutlineDarkOrangeBtn", --橙色按钮
- HKYTW7OutlineDarkGrayBtn = "HKYTW7SDFOutlineDarkGrayBtn", --灰化按钮
- HKYTW7OutlineGreenTab = "HKYTW7SDFOutlineGreenTab", --通用绿色描边
- HKYTW7OutlinePurple = "HKYTW7SDFOutlinePurple", --紫色描边
- HKYTW7OutlineGreenUp = "HKYTW7SDFOutlineGreenUpNumText", --绿色提升数字描边
- HKYTW7OutlineRedDown = "HKYTW7SDFOutlineRedDownNumText", --红色降低数字描边
-
-
- --FZZZ字体
- FZZZDefault = "FZZZSDFDefault", --无字体特效
- FZZZOutlineBlueTab = "FZZZSDFOutlineBlueTab", --页签标题特效
- FZZZOutlineDarkOrangeBtn = "FZZZSDFOutlineDarkOrangeBtn", --橙色按钮
- FZZZOutlineDarkBlueBtn = "FZZZSDFOutlineDarkBlueBtn", --蓝色按钮
- FZZZOutlineDarkGrayBtn = "FZZZSDFOutlineDarkGrayBtn", --灰化按钮
- FZZZOutlineDarkBrownNumber = "FZZZSDFOutlineDarkBrown_Number", --褐色描边
- FZZZOutlineDarkPinkNumber = "FZZZSDFOutlineDarkPink_Number", --粉色描边
- FZZZOutlineShadowBrownBlack = "FZZZSDFShadowBrownBlack", --黑色描边
- FZZZOutlineDarkActBrownBtn = "FZZZSDFOutlineDarkActBrownBtn", --活动按钮材质(充点小钱)
- FZZZOutlineDarkPurpleTitle = "FZZZSDFOutlineDarkPurpleTitle", --紫色描边
- FZZZOutlineDeepPurpleTitle = "FZZZSDFOutlineDeepPurpleTitle", --深紫色描边
- FZZZOutlineDarkOrangeTitle = "FZZZSDFOutlineDarkOrangeTitle", --橙色描边
- FZZZOutlineDarkBlueTitle = "FZZZSDFOutlineDarkBlue_noData", --蓝色描边
- FZZZOutlineDarkYellowNumber = "FZZZSDFOutlineDarkYellow_Number",--黄色描边
- FZZZSDFColorSpacielTipRed = "FZZZSDFColorSpacielTipRed", --红色描边
- }
-
- function ShaderTools.Load()
- --预加载字体材质
- for key, mat_name in pairs(ShaderTools.TMPSharedMaterialType) do
- local call_back = function(objs)
- if objs and objs[0] then
- ShaderTools.TMPSharedMaterialType[mat_name] = objs[0]
- end
- end
- if string.find(mat_name, "HKYTW7SDF") then
- resMgr:LoadMaterial("hkytw7sdf_asset", mat_name, call_back, ASSETS_LEVEL.HIGHT)
- elseif string.find(mat_name, "FZZZSDF") then
- resMgr:LoadMaterial("fzzzsdf_asset", mat_name, call_back, ASSETS_LEVEL.HIGHT)
- else
- print('can not find tmp shared material', mat_name)
- end
- end
-
- for index,name in pairs(XRayShaderMode) do
- ShaderTools.List[name] = false
- end
-
- for shader_name,value in pairs(ShaderTools.List) do
- local call_back = function(objs)
- if objs and objs[0] then
- ShaderTools.List[shader_name] = objs[0]
- end
- end
- resMgr:LoadShader("scene_shader",{shader_name}, call_back, ASSETS_LEVEL.HIGHT)
- end
-
- for shader_name, data in pairs(ShaderTools.ReplaceData) do
- local call_back = function(objs)
- if objs and objs[0] then
- data[3] = objs[0]
- end
- end
- local newShaderName = data[1]
- resMgr:LoadShader("scene_shader",{newShaderName}, call_back, ASSETS_LEVEL.HIGHT)
- end
-
- local function LoadMaterialCallBack(objs)
- if objs and objs[0] then
- ShaderTools.function_hitfresnel_prefab = objs[0]
- end
- end
- resMgr:LoadMaterial("scene_material", "hit_outline" , LoadMaterialCallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadTileMatCallBack(objs)
- if objs and objs[0] then
- ShaderTools.tile_mat = Material.New(objs[0])
- end
- end
- resMgr:LoadMaterial("scene_material", "tile_mat" , LoadTileMatCallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadShadow2CallBack(objs)
- if objs and objs[0] then
- ShaderTools.shadow2 = objs[0]
- end
- end
- resMgr:LoadMaterial("scene_material", "shadow2" , LoadShadow2CallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadAlphaEffectCallBack(objs)
- if objs and objs[0] then
- ShaderTools.alphaeffect = objs[0]
- end
- end
- resMgr:LoadMaterial("scene_material", "alphamodel" , LoadAlphaEffectCallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadDissolveTransferCallBack(objs)
- if objs and objs[0] then
- ShaderTools.dissolve_transfer_material = Material.New(objs[0])
- end
- end
- resMgr:LoadMaterial("scene_material", "dissolve_transfer" , LoadDissolveTransferCallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadDissolveEffectCallBack(objs)
- if objs and objs[0] then
- ShaderTools.dissolve_mat = Material.New(objs[0])
- end
- end
- resMgr:LoadMaterial("scene_material", "DissolveEffect_Mat" , LoadDissolveEffectCallBack, ASSETS_LEVEL.HIGHT)
-
- local function LoadDissolveEffect2CallBack(objs)
- if objs and objs[0] then
- ShaderTools.dissolve_mat2 = Material.New(objs[0])
- end
- end
- resMgr:LoadMaterial("scene_material", "DissolveEffect_Mat2" , LoadDissolveEffect2CallBack, ASSETS_LEVEL.HIGHT)
-
- ShaderTools.gray_mat = Resources.Load("material/Gray")
- end
-
- function ShaderTools.ClearMaterialData()
- ShaderTools.SceneMaterial = {}
- ShaderTools.SceneInstancedMaterial = {}
- end
-
- function ShaderTools.ChangeMaterial(mat)
- if ShaderTools.SceneMaterial[mat] == true then
- return
- end
-
- local shaderData = mat.shader
- local data = ShaderTools.ReplaceData[shaderData.name]
- if data == nil then
- return
- end
-
- ShaderTools.SceneMaterial[mat] = true
-
- --local renderQueue = mat.renderQueue
- local newShader = data[3]
- mat.shader = newShader
- mat.renderQueue = data[2]
- end
-
- function ShaderTools.GetHitfresnelMaterial()
- if ShaderTools.function_hitfresnel_prefab then
- return Material.New(ShaderTools.function_hitfresnel_prefab)
- end
- end
-
- function ShaderTools.GetOutLine2DMaterial()
- if ShaderTools.shader_outline2d then
- return Material.New(ShaderTools.shader_outline2d)
- end
- end
-
- function ShaderTools.GetOutLine3DMaterial()
- if ShaderTools.shader_outline3d then
- return Material.New(ShaderTools.shader_outline3d)
- end
- end
-
- function ShaderTools.GetShader( shader_name )
- return ShaderTools.List[shader_name]
- end
-
- function ShaderTools.GetScreenEffectMaterial()
- local screen_effect = ShaderTools.GetShader("ScreenEffect")
- if screen_effect then
- return Material.New(screen_effect)
- end
- end
-
- function ShaderTools.GetBlurEffectMaterial()
- local screen_effect = ShaderTools.GetShader("BlurEffect")
- if screen_effect then
- return Material.New(screen_effect)
- end
- end
-
- function ShaderTools.GetDualBlurMaterial( )
- local screen_effect = ShaderTools.GetShader("DualBlur")
- if screen_effect then
- return Material.New(screen_effect)
- end
- end
-
- function ShaderTools.GetGhostModeShader( )
- local ghost_shader = ShaderTools.GetShader("GhostModeShader")
- if ghost_shader then
- return ghost_shader
- end
- end
-
- function ShaderTools.GetImageGrayShader( )
- local image_gray_effect = ShaderTools.GetShader("GrayImageShad")
- if image_gray_effect then
- return Material.New(image_gray_effect)
- end
- end
-
- function ShaderTools.GetDissolveMaterial( )
- if ShaderTools.dissolve_transfer_material then
- return ShaderTools.dissolve_transfer_material
- end
- end
-
- function ShaderTools.GetTMPSharedMaterial( mat_type )
- if ShaderTools.TMPSharedMaterialType[mat_type] then
- return ShaderTools.TMPSharedMaterialType[mat_type]
- end
- end
-
- function ShaderTools.GetRadiusMaterial( )
- local radiusBlur_effect = ShaderTools.GetShader("RadiusBlur")
- if radiusBlur_effect then
- return Material.New(radiusBlur_effect)
- end
- end
|