|
|
- -- <*
- -- @Author: Saber
- -- @Description: 摄像机FXAA调试界面
- -- *>
- CheatFXAAView = CheatFXAAView or BaseClass(BaseView)
- local CheatFXAAView = CheatFXAAView
- -- local LuminanceMode = FXAAEffect.LuminanceMode
- function CheatFXAAView:__init()
- self.base_file = "cheat"
- self.layout_file = "CheatFXAAView"
- self.layer_name = "Top"
- self.destroy_imm = true
- self.use_background = false --全屏界面默认使用这个参数,非全屏界面自行设置
- self.is_show = true
- self.main_camera = nil
- self.ui_model_camera = nil
- self.setting_errcode = {
- [1] = "当前发布设置的HDR Mode为R11G11B10,无法使用当前明度计算类型",
- [2] = "该明度计算类型无需gamma补偿",
- }
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:UpdateView()
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
- end
-
- function CheatFXAAView:Open( )
- BaseView.Open(self)
- end
-
- function CheatFXAAView:LoadSuccess()
- -- 按钮部分
- self.closeBtn = self:GetChild("closeBtn").gameObject
- self.main_cam_btn = self:GetChild("main_cam_btn").gameObject -- 激活模型摄像机参数界面
- self.ui_cam_btn = self:GetChild("ui_cam_btn").gameObject -- 激活主摄像机参数界面
- self.hideBtn = self:GetChild("hideBtn").gameObject -- 隐藏界面
- -------------------------------------------
- -- 主摄像机参数节点
- self.main_node = self:GetChild("main").gameObject
- self.main_content = self:GetChild("main/Viewport/main_content")
- self.main_enable_toggle = self:GetChild("main/Viewport/main_content/main_enable_toggle"):GetComponent("Toggle")
- -- 主摄对比度阈值
- self.main_c_th_sl = self:GetChild("main/Viewport/main_content/main_c_threshold/main_c_th_sl"):GetComponent("Slider")
- self.main_c_th_val = self:GetChild("main/Viewport/main_content/main_c_threshold/main_c_th_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 主摄相对对比度阈值
- self.main_r_th_sl = self:GetChild("main/Viewport/main_content/main_r_threshold/main_r_th_sl"):GetComponent("Slider")
- self.main_r_th_val = self:GetChild("main/Viewport/main_content/main_r_threshold/main_r_th_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 混合比例
- self.main_sp_b_sl = self:GetChild("main/Viewport/main_content/main_subpix_blend/main_sp_b_sl"):GetComponent("Slider")
- self.main_sp_b_val = self:GetChild("main/Viewport/main_content/main_subpix_blend/main_sp_b_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 低质量步长
- self.main_low_qua_toggle = self:GetChild("main/Viewport/main_content/main_low_qua_toggle"):GetComponent("Toggle")
- -- 主摄FOV
- self.main_cam_fov_sl = self:GetChild("main/Viewport/main_content/main_cam_fov/main_cam_fov_sl"):GetComponent("Slider")
- self.main_cam_fov_val = self:GetChild("main/Viewport/main_content/main_cam_fov/main_cam_fov_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 主摄双重模糊
- self.main_dual_blur_tog = self:GetChild("main/Viewport/main_content/main_dual_blur_tog"):GetComponent("Toggle")
- -- 主摄采样类型
- self.main_combox_node = self:GetChild("main/Viewport/main_content/main_combox")
-
- SetSizeDeltaY(self.main_content, 720)
- -------------------------------------------
- -------------------------------------------
- -- 模型摄像机参数节点
- self.ui_node = self:GetChild("ui").gameObject
- self.ui_content = self:GetChild("ui/Viewport/ui_content")
- self.ui_enable_toggle = self:GetChild("ui/Viewport/ui_content/ui_enable_toggle"):GetComponent("Toggle")
- -- 主摄对比度阈值
- self.ui_c_th_sl = self:GetChild("ui/Viewport/ui_content/ui_c_threshold/ui_c_th_sl"):GetComponent("Slider")
- self.ui_c_th_val = self:GetChild("ui/Viewport/ui_content/ui_c_threshold/ui_c_th_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 主摄相对对比度阈值
- self.ui_r_th_sl = self:GetChild("ui/Viewport/ui_content/ui_r_threshold/ui_r_th_sl"):GetComponent("Slider")
- self.ui_r_th_val = self:GetChild("ui/Viewport/ui_content/ui_r_threshold/ui_r_th_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 混合比例
- self.ui_sp_b_sl = self:GetChild("ui/Viewport/ui_content/ui_subpix_blend/ui_sp_b_sl"):GetComponent("Slider")
- self.ui_sp_b_val = self:GetChild("ui/Viewport/ui_content/ui_subpix_blend/ui_sp_b_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- 低质量步长
- self.ui_low_qua_toggle = self:GetChild("ui/Viewport/ui_content/ui_low_qua_toggle"):GetComponent("Toggle")
- -- 模摄FOV
- self.ui_cam_fov_sl = self:GetChild("ui/Viewport/ui_content/ui_cam_fov/ui_cam_fov_sl"):GetComponent("Slider")
- self.ui_cam_fov_val = self:GetChild("ui/Viewport/ui_content/ui_cam_fov/ui_cam_fov_val"):GetComponent(typeof(TMPro.TextMeshProUGUI))
- -- UI摄像机双重模糊
- self.ui_dual_blur_tog = self:GetChild("ui/Viewport/ui_content/ui_dual_blur_tog"):GetComponent("Toggle")
- -- 模摄采样类型
- self.ui_combox_node = self:GetChild("ui/Viewport/ui_content/ui_combox")
-
- SetSizeDeltaY(self.ui_content, 720)
- -------------------------------------------
-
- SetAnchoredPosition(self.transform, -ClientConfig.iphone_x_offset_right, 0)
- end
-
- function CheatFXAAView:AddEvent()
- local function click_event(target)
- if target == self.closeBtn then
- self:Close()
- elseif target == self.main_cam_btn then -- 打开主摄参数面板,下面反之亦然
- self.main_node:SetActive(true)
- self.ui_node:SetActive(false)
- elseif target == self.ui_cam_btn then
- self.main_node:SetActive(false)
- self.ui_node:SetActive(true)
- elseif target == self.hideBtn then -- 隐藏/显示界面
- self:HideAction(not self.is_show)
- -- 主摄参数部分
- elseif target == self.main_enable_toggle.gameObject then -- 启用/禁用FXAA
- if self.main_FXAA then
- self.main_FXAA.EnableFXAA = self.main_enable_toggle.isOn
- end
- elseif target == self.main_low_qua_toggle.gameObject then -- 启用/低质量步长
- if self.main_FXAA then
- self.main_FXAA.lowQuality = self.main_low_qua_toggle.isOn
- end
- -- 模摄参数部分
- elseif target == self.ui_enable_toggle.gameObject then -- 启用/禁用FXAA
- if self.ui_FXAA then
- self.ui_FXAA.EnableFXAA = self.ui_enable_toggle.isOn
- end
- elseif target == self.ui_low_qua_toggle.gameObject then -- 启用/低质量步长
- if self.ui_FXAA then
- self.ui_FXAA.lowQuality = self.ui_low_qua_toggle.isOn
- end
- end
- self:ApplyFXAASetting()
- end
- AddClickEvent(self.closeBtn, click_event)
- AddClickEvent(self.main_cam_btn, click_event)
- AddClickEvent(self.ui_cam_btn, click_event)
- AddClickEvent(self.hideBtn, click_event)
- AddClickEvent(self.main_enable_toggle.gameObject, click_event)
- AddClickEvent(self.main_low_qua_toggle.gameObject, click_event)
- AddClickEvent(self.ui_enable_toggle.gameObject, click_event)
- AddClickEvent(self.ui_low_qua_toggle.gameObject, click_event)
-
- local function onSliderDrag(target)
- local value = target:GetComponent("Slider").value
- -- 主摄像机部分
- if target == self.main_c_th_sl.gameObject then
- self.main_c_th_val.text = tonumber(string.format("%.4f", value))
- if self.main_FXAA then
- self.main_FXAA.contrastThreshold = value
- end
- elseif target == self.main_r_th_sl.gameObject then
- self.main_r_th_val.text = tonumber(string.format("%.4f", value))
- if self.main_FXAA then
- self.main_FXAA.relativeThreshold = value
- end
- elseif target == self.main_sp_b_sl.gameObject then
- self.main_sp_b_val.text = tonumber(string.format("%.4f", value))
- if self.main_FXAA then
- self.main_FXAA.subpixelBlending = value
- end
- elseif target == self.main_cam_fov_sl.gameObject then
- self.main_cam_fov_val.text = value
- if self.main_camera then
- self.main_camera.fieldOfView = value
- end
- -- 模型摄像机部分
- elseif target == self.ui_c_th_sl.gameObject then
- self.ui_c_th_val.text = tonumber(string.format("%.4f", value))
- if self.ui_FXAA then
- self.ui_FXAA.contrastThreshold = value
- end
- elseif target == self.ui_r_th_sl.gameObject then
- self.ui_r_th_val.text = tonumber(string.format("%.4f", value))
- if self.ui_FXAA then
- self.ui_FXAA.relativeThreshold = value
- end
- elseif target == self.ui_sp_b_sl.gameObject then
- self.ui_sp_b_val.text = tonumber(string.format("%.4f", value))
- if self.ui_FXAA then
- self.ui_FXAA.subpixelBlending = value
- end
- elseif target == self.ui_cam_fov_sl.gameObject then
- self.ui_cam_fov_val.text = value
- if self.ui_model_camera then
- self.ui_model_camera.fieldOfView = value
- end
- end
- self:ApplyFXAASetting()
- end
- AddDragEvent(self.main_c_th_sl.gameObject, onSliderDrag)
- AddDragEvent(self.main_r_th_sl.gameObject, onSliderDrag)
- AddDragEvent(self.main_sp_b_sl.gameObject, onSliderDrag)
- AddDragEvent(self.main_cam_fov_sl.gameObject, onSliderDrag)
- AddDragEvent(self.ui_c_th_sl.gameObject, onSliderDrag)
- AddDragEvent(self.ui_r_th_sl.gameObject, onSliderDrag)
- AddDragEvent(self.ui_sp_b_sl.gameObject, onSliderDrag)
- AddDragEvent(self.ui_cam_fov_sl.gameObject, onSliderDrag)
-
- local function onOrientationChange()
- SetAnchoredPosition(self.transform, -ClientConfig.iphone_x_offset_right, 0)
- end
- self:BindEvent(GlobalEventSystem, EventName.ORIENTATION_DID_CHANGE, onOrientationChange)
- end
-
- function CheatFXAAView:UpdateView()
- self:InitCamsData()
- -- self:InitLuminanceCombox()
- self.main_node:SetActive(true)
- self.ui_node:SetActive(false)
- self:HideAction(true)
- end
-
- function CheatFXAAView:InitCamsData( )
- -- 获取摄像机
- if not self.main_camera then
- self.main_camera = MainCamera.Instance.camera
- end
- if not self.ui_model_camera then
- self.ui_model_camera = GameObject.Find("root").transform:Find("UIBackRoleCamera"):GetComponent("Camera")
- end
- -- 获取FXAA类
- if not self.main_FXAA then
- self.main_FXAA = self.main_camera.gameObject:GetComponent(typeof(PostEffect))
- end
- if not self.ui_FXAA then
- self.ui_FXAA = self.ui_model_camera.gameObject:GetComponent(typeof(PostEffect))
- end
- -- 初始化摄像机参数和FXAA参数
- self.main_enable_toggle.isOn = self.main_FXAA.EnableFXAA
- self.main_c_th_sl.value = self.main_FXAA.contrastThreshold
- self.main_c_th_val.text = tonumber(string.format("%.4f", self.main_FXAA.contrastThreshold))
- self.main_r_th_sl.value = self.main_FXAA.relativeThreshold
- self.main_r_th_val.text = tonumber(string.format("%.4f", self.main_FXAA.relativeThreshold))
- self.main_sp_b_sl.value = self.main_FXAA.subpixelBlending
- self.main_sp_b_val.text = tonumber(string.format("%.4f", self.main_FXAA.subpixelBlending))
- self.main_low_qua_toggle.isOn = self.main_FXAA.lowQuality
- self.main_cam_fov_sl.value = self.main_camera.fieldOfView
- self.main_cam_fov_val.text = self.main_camera.fieldOfView
-
-
- self.ui_enable_toggle.isOn = self.ui_FXAA.EnableFXAA
- self.ui_c_th_sl.value = self.ui_FXAA.contrastThreshold
- self.ui_c_th_val.text = tonumber(string.format("%.4f", self.ui_FXAA.contrastThreshold))
- self.ui_r_th_sl.value = self.ui_FXAA.relativeThreshold
- self.ui_r_th_val.text = tonumber(string.format("%.4f", self.ui_FXAA.relativeThreshold))
- self.ui_sp_b_sl.value = self.ui_FXAA.subpixelBlending
- self.ui_sp_b_val.text = tonumber(string.format("%.4f", self.ui_FXAA.subpixelBlending))
- self.ui_low_qua_toggle.isOn = self.ui_FXAA.lowQuality
- self.ui_cam_fov_sl.value = self.ui_model_camera.fieldOfView
- self.ui_cam_fov_val.text = self.ui_model_camera.fieldOfView
- end
-
- function CheatFXAAView:ApplyFXAASetting( )
- local function apply_setting()
- if self.main_FXAA then
- self.main_FXAA:ApplyFXAAMaterialProperties()
- end
- if self.ui_FXAA then
- self.ui_FXAA:ApplyFXAAMaterialProperties()
- end
- end
- TimeManager.GetInstance():StartTime("CheatFXAAView_ApplyFXAASetting", 0.5, apply_setting)
- end
-
- -- -- 初始化明度计算下拉框
- -- function CheatFXAAView:InitLuminanceCombox(just_reselect)
- -- local list = {
- -- {luminanceMode = LuminanceMode.Alpha},
- -- {luminanceMode = LuminanceMode.Green},
- -- {luminanceMode = LuminanceMode.Calculate},
- -- }
- -- local combox_str_list = {
- -- "Alpha",
- -- "Green",
- -- "Calculate",
- -- }
- -- self.cur_main_lm_mode_index = 1
- -- if self.main_FXAA.luminanceSource == LuminanceMode.Green then
- -- self.cur_main_lm_mode_index = 2
- -- elseif self.main_FXAA.luminanceSource == LuminanceMode.Calculate then
- -- self.cur_main_lm_mode_index = 3
- -- end
- -- local function update_main_luminance_func(index)
- -- self.cur_main_lm_mode_index = index
- -- self.main_FXAA.luminanceSource = list[index].luminanceMode
- -- -- self:ApplySetting()
- -- end
- -- local main_prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9}
- -- if not self.main_combox then
- -- self.main_combox = Combox.New(self.main_combox_node, combox_str_list, update_main_luminance_func, 122, 38, nil, main_prefab_data, self.layer_name)
- -- SetAnchoredPositionX(self.main_combox.transform, 0, 0)
- -- self.main_combox:ResetData(combox_str_list, self.cur_main_lm_mode_index, update_main_luminance_func, 122, 38, nil, true)
- -- else
- -- self.main_combox:ResetData(combox_str_list, self.cur_main_lm_mode_index, update_main_luminance_func, 122, 38, nil, just_reselect)
- -- end
-
- -- self.cur_ui_lm_mode_index = 1
- -- if self.ui_FXAA.luminanceSource == LuminanceMode.Green then
- -- self.cur_ui_lm_mode_index = 2
- -- elseif self.ui_FXAA.luminanceSource == LuminanceMode.Calculate then
- -- self.cur_ui_lm_mode_index = 3
- -- end
- -- local function update_ui_luminance_func(index)
- -- self.cur_ui_lm_mode_index = index
- -- self.ui_FXAA.luminanceSource = list[index].luminanceMode
- -- -- self:ApplySetting()
- -- end
- -- local ui_prefab_data = {Combox = "Combox",ComboxView = "ComboxView", ComboxItem = "ComboxItem", offset_y = -#list*ComboxItem.Height-9}
- -- if not self.ui_combox then
- -- self.ui_combox = Combox.New(self.ui_combox_node, combox_str_list, update_ui_luminance_func, 122, 38, nil, ui_prefab_data, self.layer_name)
- -- SetAnchoredPositionX(self.ui_combox.transform, 0, 0)
- -- self.ui_combox:ResetData(combox_str_list, self.cur_ui_lm_mode_index, update_ui_luminance_func, 122, 38, nil, true)
- -- else
- -- self.ui_combox:ResetData(combox_str_list, self.cur_ui_lm_mode_index, update_ui_luminance_func, 122, 38, nil, just_reselect)
- -- end
- -- end
-
- function CheatFXAAView:HideAction(show)
- self.is_show = show
- -- SetLocalRotation(self.hideBtn.transform, 0, 0, self.is_show and 90 or 270)
- self.hideBtn.transform.localRotation = Quaternion.Euler(Vector3(0, 0, self.is_show and 90 or 270))
- local target_pos_x = (self.is_show and 0 or 366 ) - ClientConfig.iphone_x_offset_right
- self.con_anim_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSX, target_pos_x, 0.3, nil, TweenFunc.EASE_OUT_QUINT)
- end
-
- -- function CheatFXAAView:ApplySetting( )
- -- local errcode, err_msg
- -- if self.main_FXAA then
- -- errcode = self.main_FXAA:ApplySetting()
- -- err_msg = self.setting_errcode[errcode]
- -- if err_msg then
- -- print("Saber:CheatFXAAView [start:306] ------------------------------------------")
- -- Message.show(err_msg, "fault")
- -- end
- -- end
- -- if self.ui_FXAA then
- -- errcode = self.ui_FXAA:ApplySetting()
- -- err_msg = self.setting_errcode[errcode]
- -- if err_msg then
- -- print("Saber:CheatFXAAView [start:314] ------------------------------------------")
- -- Message.show(err_msg, "fault")
- -- end
- -- end
- -- self:InitCamsData()
- -- self:InitLuminanceCombox(true)
- -- end
-
- function CheatFXAAView:StopHideAction( )
- if self.con_anim_id then
- TweenLite.Stop(self.con_anim_id)
- SetAnchoredPositionX(self.transform, (self.is_show and 0 or 366 ) - ClientConfig.iphone_x_offset_right)
- end
- end
-
- function CheatFXAAView:DestroySuccess( )
- self:StopHideAction()
- end
|