当前位置: 首页 > news >正文

小程序开发平台哪个产品好seo外链发布平台

小程序开发平台哪个产品好,seo外链发布平台,手机网站比例,中国建筑设计行业网在上一节中,我们添加了外轮廓线,但这个外轮廓线在所有使用该Shader的网格上是始终存在的。 如果我们想做一个开关,决定是否打开外轮廓线时,我们可以使用一个新的Uniform bool值,然后判断bool是否为true来开启外轮廓线…

在上一节中,我们添加了外轮廓线,但这个外轮廓线在所有使用该Shader的网格上是始终存在的。

如果我们想做一个开关,决定是否打开外轮廓线时,我们可以使用一个新的Uniform bool值,然后判断bool是否为true来开启外轮廓线。

但是这样会造成性能的浪费,因为就算我们没有开启这个功能,Shader还是会遍历每一个if条件。这与GPU的运行原理有关。
故我们使用Unity的多编译功能,将Shader多次编译成多个子Shader。

Shader中添加开关

定义开关名称

// 自定义关键字
[Toggle(_ENABLE_OUTLINE_ON)] _EnableOutline("Enable OutLine", Float) = 0.0
// 默认关键字(默认为 名称大写+_ON)
[Toggle] _EnableOutline("Enable OutLine", Float) = 0.0
// 默认关键字为(_ENABLEOUTLINE_ON)

在Input中声明变量

1.
half _EnableInline;2.
#ifdef UNITY_DOTS_INSTANCING_ENABLED
UNITY_DOTS_INSTANCING_START(MaterialPropertyMetadata)...UNITY_DOTS_INSTANCED_PROP(float , _EnableInline)
UNITY_DOTS_INSTANCING_END(MaterialPropertyMetadata)3.
#define _EnableInline           UNITY_ACCESS_DOTS_INSTANCED_PROP_FROM_MACRO(float  , Metadata__EnableInline)

定义关键字

//pass中定义
#progma shader_feature _ENABLE_OUTLINE_ON//自定义关键字
#progma shader_feature _ENABLEOUTLINE_ON//默认关键字

使用关键字

#if defined(_ENABLE_OUTLINE_ON)#else#endif

在GUI中设置开关,来控制该关键字

在子GUI面板中添加按钮设置Shader中变量值

public static class Styles
{public static readonly GUIContent InlineEnable = new GUIContent("开启内勾边","");
}public struct LitProperties
{public MaterialProperty InlineEnabled;public LitProperties(MaterialProperty[] properties){InlineEnabled = BaseShaderGUI.FindProperty("_EnableInline", properties, false);}
}/// <summary>
/// 当滚轮滑动材质Inspector面板时,该函数调用4+次
/// 当修改参数或点击按钮时,该函数也会调用约8-12次
/// 因此可将该函数看作多次遍历的函数
/// </summary>
public static void DoDetailArea(LitProperties properties, MaterialEditor materialEditor)
{materialEditor.ColorProperty(properties.OutLineColor, Styles.OutLineColorContent.text);materialEditor.FloatProperty(properties.OutLineSize, Styles.OutLineSizeContent.text);// 显示按钮,设置GUI按钮的值,返回开关选中的状态bool inlineEnabled = EditorGUILayout.Toggle(Styles.InlineEnable, properties.InlineEnabled.floatValue > 0.5f);// 根据按钮的选中状态修改Shader值properties.InlineEnabled.floatValue = inlineEnabled ? 1f : 0f;// BeginDisabledGroup参数填True,则为禁用Begin至End直接的功能。在untiy面板上置灰。EditorGUI.BeginDisabledGroup(!inlineEnabled);{materialEditor.FloatProperty(properties.InlineSize, Styles.InlineSizeContent.text);materialEditor.FloatProperty(properties.Inlineluminance, Styles.InlineluminanceContent.text);materialEditor.FloatProperty(properties.HightLightTransition, Styles.HightLightTransitionContent.text);}EditorGUI.EndDisabledGroup();
}

此时,便可以通过按钮设置properties.InlineEnabled.floatValue的值了。

根据Shader中变量值,设置宏的值

根据Shader中变量值"_EnableInline",设置宏"_ENABLE_INLINE_ON"的值

public static void SetMaterialKeywords(Material material)
{if (material.HasProperty("_EnableInline")){bool isSnowEnabled = material.GetFloat("_EnableInline") > 0.5f;CoreUtils.SetKeyword(material, "_ENABLE_INLINE_ON", isSnowEnabled);}
}

当用户使用这个ShaderGUI将材质加载到内存中或者改变Inspector中的值时,编辑器调用下面这个方法。我们在这个方法中调用SetMaterialKeywords函数

public override void ValidateMaterial(Material material)
{CP_DragonOutLineGUI.SetMaterialKeywords(material);
}

该方法可用于设置材质中的各个宏定义。

http://www.hrbkazy.com/news/10617.html

相关文章:

  • 郑州网站开发设计公司电话全球网站排名查询
  • 南京品牌网站建设百度推广授权代理商
  • 那些做面点的网站好seo查询系统
  • 网站内页怎么做seo湖南长沙关键词推广电话
  • 深圳设计网站公司怎么联系百度人工客服
  • 外贸网站建设要求优化教程网官网
  • 陕西今日头条新闻免费手机优化大师下载安装
  • java网站开发设计搜索引擎推广法
  • wordpress百度分享代码搜索引擎优化的报告
  • wordpress 页面 跳转上海优化seo公司
  • 藁城专业网站建设网站查询关键词排名软件
  • 有哪些做企业点评的网站网页设计与制作软件有哪些
  • 邯郸网站设计培训机构搜索引擎广告
  • 有做材料的网站吗大型网站制作
  • 网站 备案地百度竞价推广教程
  • 宁夏做网站建设公司企业网站建设方案模板
  • 做网站编辑需要什么文凭交换友情链接平台
  • 新华区网站建设怎么设计网站
  • 杭州 网站开发公司广告网站建设网站排名优化
  • 做外贸铝材哪个网站比较好seo整站优化外包公司
  • 云南网站建设找三好科技班级优化大师手机版下载(免费)
  • 网站语言那种好巨量引擎广告投放平台代理
  • 想在中国网站做海外代购镇江网站建设推广
  • 福建省华荣建设集团有限公司网站网络服务提供商是指
  • 网站大图轮播seo博客网址
  • 周口seo什么是seo标题优化
  • 专门做自助游的网站百度seoo优化软件
  • 建官网个人网站百度推广账号登录入口
  • 旅游网站的设计方案怎么做天猫seo搜索优化
  • 爱站网长尾关键词挖掘网站管理系统