multi_compile】的更多相关文章

参考链接: https://blog.csdn.net/qq826364410/article/details/81774741 https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html 1.#pragma multi_compile MY_multi_1 MY_multi_2 定义了两个shader关键字,一个是MY_multi_1,另一个是MY_multi_2 MultiCompile.shader Shader "Cus…
[multi_compile]  Used to  compile the shader code multiple times with different preprocessor directives for each case.  #pragma multi_compile  #pragma shader_feature At runtime, the appropriate shader variant is picked up from the Material keywords (…
多版本Shader与multi_compile   https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html   #pragma multi_compile Type_1 Type_2 Type_3 ... 这个指令将会生成多个Shader变体(variants),运行时根据材质或是全局的Keyword决定哪个变体起效 所有关键字都没有起效的话, 会选择第一个起效,所以一般是写 XXX_OFF XXX_ON  默认关闭某选项…
http://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html http://forum.unity3d.com/threads/tutorial-shade-more-efficiently-taking-advantage-of-multi-compile-shaders.222088/…
效果: 案例:新仙剑,王者之剑. 在切换场景的时候,就会有这样的全屏扭曲效果. 思路: 1.用GrabPass抓屏到一张纹理中. 2.进行扭曲,绘制到UGUI的Image上. 准备: 去官网下载Unity内置Shader,当前最新版本:builtin_shaders-5.3.1f1 http://unity3d.com/cn/get-unity/download/archive 里面有Image用的默认Shader:Sprites-Default 我们要在这个shader的基础上加上扭曲效果.…
预定义shader预处理宏: Target platform: SHADER_API_OPENGL - desktop OpenGL SHADER_API_D3D9 - Direct3D SHADER_API_XBOX360 - Xbox SHADER_API_PS3 - PlayStation SHADER_API_D3D11 - desktop Direct3D SHADER_API_GLES - OpenGL ES 2.0 (desktop or mobile), use presence…
// Upgrade NOTE: replaced 'PositionFog()' with multiply of UNITY_MATRIX_MVP by position // Upgrade NOTE: replaced 'V2F_POS_FOG' with 'float4 pos : SV_POSITION' // Upgrade NOTE: replaced 'defined HAS_REFLECTION' with 'defined (HAS_REFLECTION)' // Upgr…
http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编辑器.为什么Asset Store已经有那么多炫酷的Shader组件可下载,还是有必要学些Shader的编写? 2014-0718-1607-11-33.png 因为上面这些Shader工具/组件最终都是以Shader文件的形式而存在. 需要开发人员/技术美术有能力对Shader进行功能分析.效率评…
The Lab Renderer for Unity是Valve针对VR在Unity的体验渲染器,提高VR的渲染效率,更多的大家可以查相应资料,在这,说个The Lab Renderer for Unity现阶段的问题,可能是第一版,在地形并不能接受Valve渲染产生的阴影,对应地形上的树啥的也不能产生阴影,经过相应修改后,如下是改动后的效果图. 我们首先需要分析下Lab Renderer的基本渲染流程,主要代码在ValveCamera中,可以看到,渲染流程还是很简单的,相应的Lab Rende…
一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMesh对应的Material.如一个桌子的Mesh,其实有二个材质,分别对应二个SubMesh,一个桌面和一个桌脚,点击桌面后,只有这个桌面高光,而不是整个桌子,并且能单独更换这个桌面的Material. 我们知道Unity中,Mesh和Ogre一样,也是可以有多个SubMesh,每个SubMesh有…
cg片段 Cg程序片段写CGPROGRAM和ENDCG之间 开始时的片段可以作为#pragma语句编译指令 Pass { // ... the usual pass state setup ... CGPROGRAM // compilation directives for this snippet, e.g.: #pragma vertex vert #pragma fragment frag // the Cg/HLSL code itself ENDCG // ... the rest…
先看终于效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> 我们的原图是一个3D模型的截图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkF…
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity5.3.8f1 Unity提供了2D Object Sprite对象,但是没有提供外轮廓Outline效果的支持,本次将会使用扩展版本的默认sprite着色器以及一个简单的组件来添加sprite的轮廓.这可以用于突出鼠标上的精灵,突出显示环境中的元素,或仅仅使精灵从周围环境中脱颖而出. 首先,在您的项目中创建一个名为Sprite-Outline的新着色器. 这个着色器提供了默认sprite着色器的所有功能,并…
第一次接触Shader,项目需要,直接说需求吧,需要一个透明并且能接受阴影的shader.unity系统自带的shader已经满足不了了.上一段代码吧 Shader "GreenArch/Transparent Plane Shadow2" { Properties { } SubShader { Tags { "RenderType"="Opaque" } Pass { Name "DEFERRED" Tags { &quo…
写在前面 之前遇到过一些朋友问怎么在材质面板里定义类似于bool这种变量,控制一些代码的执行.我们当然可以写一个C#文件来自定义材质面板,就像Unity为Standard Shader写材质面板一样(你可以在built-in shader包里找到这些文件),但这样有时候太麻烦了.实际上,有一种更简单的方法,不需要写额外的C#文件就可以直接在shader里定义类似bool.enum这种简单的变量,Unity为这些变量提供了内置的材质面板.而这就是通过MaterialPropertyDrawer(当…
写在前面 最近一直在思考下面的学习该怎么进行,当然自己有在一边做项目一边学OpenGL,偶尔翻翻论文之类的.但是,写shader是一个需要实战和动手经验的过程,而模仿是前期学习的必经之路.很多人都会问,怎么学shader,看什么书.当然我经验也不够,目前的路线是:掌握一门着色语言+读几本经典书籍+学习优秀的shader实例+动手实践+动手实践+动手实践.每一个都不容易,所以学shader是一个漫长而艰辛的过程. 当当当~所以,在继Surface Shader系列之后,我打算学习一下现在已有的各种…
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=596 昨晚看到群里问到2DSprite怎么变成灰白图,晚上看了下,修改shader是最方便的. 下面是Sprites-Gray.shader的实现,请放入自己工程: Shader "Sprites/Gray" { Properties { [PerRendererData] _MainTex ("Sprite…
最近遇到了一个问题,角色在Unity编辑器里运行渲染结果都是好的,打包到IOS上却发现,角色身上渲染的很黑.花了些时间查了查,又试了试,把这方面算是初步弄清楚了. 先说出现问题的原因,由于我们把shader打包进了AssetBundle中,并且在Shader中使用了shader_feature来定义了宏. 为了完整起见,先从unity的shader  variant说起. ShaderVariant 举个例子,对于一个支持法线贴图的Shader来说,用户肯定希望无论是否为材质提供法线贴图它的Sh…
参考链接: https://blog.csdn.net/akof1314/article/details/50428200 1.Mask.shader // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) Shader "Custom/Mask" { Properties { [PerRendererData] _MainTex (&qu…
参考链接: https://zhuanlan.zhihu.com/p/32561155 https://blog.csdn.net/WuShangLZ/article/details/80401441 https://www.jianshu.com/p/2d98fad196d2 unity版本:2018.3.8f1 内置UI-Default.shader: // Unity built-in shader source. Copyright (c) 2016 Unity Technologies…
参考链接: https://blog.csdn.net/e295166319/article/details/60141677 https://docs.unity3d.com/ScriptReference/MaterialPropertyDrawer.html 1.Toggle a.[Toggle] _Invert ("Invert?", Float) = 0 勾选时,表示使shader关键字_INVERT_ON生效,关键字格式为:name_ON(全部大写) 取消勾选时,表示使对应…
GrabPass截屏 可以用来截屏,截屏后把纹理传给下一个通道使用. 1:使用抓屏通道, GrabPass {} 或 GrabPass { “ 纹理名称”}; 使用GrabPass {}后,可以用_GrabTexture访问截屏的纹理2: 后续的Pass通道使用这个抓屏;3: 编写案例 (1): 创建一个顶点片元着色器; (2): 将这个着色器放到Overlay队列 (3): 使用GrabPass通道截屏,并定义好变量来接收 (3): 设置顶点的UV坐标; (4): 着色使用截图的纹理 Grab…
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 海水仿真渲染一直是比较困难的事情,虽然市面上有了各种海水的渲染算法,但是真正做到仿真渲染的少之又少.大多停留在试验阶段,达到了仿真的要求,但是硬件配置要求高,不利于推广.本篇博客给读者介绍的是关于海…
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity5.3.8f1 Unity提供了2D Object Sprite对象,但是没有提供外轮廓Outline效果的支持,本次将会使用扩展版本的默认sprite着色器以及一个简单的组件来添加sprite的轮廓.这可以用于突出鼠标上的精灵,突出显示环境中的元素,或仅仅使精灵从周围环境中脱颖而出. 首先,在您的项目中创建一个名为Sprite-Outline的新着色器. 这个着色器提供了默认sprite着色器的所有功能,并…
这应该unity5才出的新功能了,今天看文档时刚巧看到了,就来尝试了一下. 效果如图: shader 的编辑器扩展分为2种方法: 是通过UnityEditor下的ShaderGUI类来实现的,形式比较近似于我们一般对unity编辑器的扩展方式. 是通过直接在shader代码上通过unity为我们预定义好的一些命令来扩展. 个人比较推荐使用第一种方法,第二种在尝试时发现 ①是第二种控件的种类有限.限制还特别多,变量申请的不对的话,有时也不报错,不利于维护. ②是文档里还有错误+没说清楚的地方. ③…
1.先来一段单张纹理贴图的shader示例代码: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/MyShader"{ Properties{ //外部可调属性 _MainTex ("Main Tex", 2D) = "white" {} } SubShader { //设置使用本Subshader所…
https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493518&idx=1&sn=c51b92e9300bcfdcd6d106f06f934971&chksm=fe1dd325c96a5a3372415e960279338affb6d46b6b5ca061c33204b916892338d612e481112b&scene=21#wechat_redirect 对游戏开发者而言,着色器长久以来就是游戏…
Shader "Sprites/Default" { Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0 } SubShader {…
//U3D用的shader语言叫ShaderLab,基础语法官方文档地址 //https://docs.unity3d.com/Manual/SL-Shader.html //开头指明名字,可以在别的shader中通过名字调用该shader的Pass什么的 //UsePass "ShaderName/PassName" Shader "ShaderName" { //属性定义 Properties { [DisplayType]_Name("Display…
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) Shader "UI/UICircular" { Properties { _R("圆的半径R", Range(0,1)) = 0.5 _Blur("边缘虚化的范围", Range(0,100)) = 100 [PerRendererData]…