源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

265 righe
8.5 KiB

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