[UnityShader]点染队列、ZWrite和ZTest】的更多相关文章

转载自:http://www.myexception.cn/mobile/1902628.html [UnityShader]渲染队列.ZWrite和ZTest 参考链接:http://blog.csdn.net/zhuyingqingfen/article/details/18979547 http://blog.csdn.net/lysc_forever/article/details/13614449 (1)什么是深度? 深度其实就是该像素点在3d世界中距离摄象机的距离,深度值(Z值)越大…
给项目组做了个imageEffect特效,结果导致ngui不显示(ugui则不存在此问题),看ngui的一些shader,其中ztest是开着的,而且ui相机的Clear Flags用的是Don't Clear.试了一下,无论是将ngui的shader中的ztest改成Always还是将ui相机的Clear Flags改成Depth Only,ui都能正常显示.但问题是在没加我的imageEffect特效之前什么都不用改也能正常显示ui,所以以上解法都不太本质. 其实经过上面的观察已经明白了问题…
剔除和深度测试是渲染法线中的一个流程 Cull:默认情况下,Unity中给的所有Shader都是单面的,它都把反面的渲染给关闭掉了,如果你在开发的过程中需要使用到双面,只要把cull关闭(off)即可! ZWrite:深度缓存ZWrite默认情况下都是开启的,因为我们3D场景中的模型非常多,那么模型与模型之间的前后关系就是由ZWrite来控制的,所以默认情况下要开启,前面已经介绍过它了 直接看效果来介绍 Cull:Unity中给的所有Shader都是单面的,它都把反面的渲染给关闭掉了,我们来看下…
好久没写博客了,最近在学shader,不得不说,shader真的非常美妙,我沉迷其中无法自拔= = 之前做过一个遮挡透明的功能,当物体遮挡住主角时,该物体会变成半透明显示出主角.这次同样是遮挡透明的功能,不过,变透明的刚刚相反,是主角变成半透明,更严谨的说是主角被遮挡的那一部分变成半透明. 先放出结果图: 当被遮挡时,遮挡部分透明处理,那么需要涉及渲染深度的知识.引擎是如何判断哪个物体在前面哪个物体在后面呢? 深度:每个像素有自己的深度值,离摄像机近的深度小,远的深度大 深度缓冲区:存储每个像素…
简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明) (好奇怪,为啥我字那么多,提示我少于150字) 裁剪 代码 Shader "LT/Lesson3_Cull" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) } SubShader { Pass { Cul…
之前在网上看到物体遮挡描边的功能,自己也拿来实现了一番.算作第一篇博客的开篇. 先贴出几张效果图,也是个人思路和方案的改进路线吧. //////////////////////////////////////////////////////////////////方案实现//////////////////////////////////////////////////////////////////////////////////////// 看到描边的功能,最先想到的就是用stencil的方…
参考链接: 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://unity3d.com/cn/learn/tutorials/topics/best-practices/fill-rate-canvases-and-input?playlist=30089#anchor-fn-2 这一章讨论一下在构建Unity UI时容易碰到的问题. 解决填充率问题 有两种方法可以减轻GPU片段管线的压力: * 减少片段shader的复杂度 - 更多详细信息,请看"UI Shader和低端设备"部分. * 减少必须被采样的像素点的数量. 由于…
我们先大概了解一下对渲染的优先级有影响的几个因素 1.Camera.Depth 不同相机的深度,在渲染顺序的优先度里面是最高的,Depth越大,渲染的图像越靠前 2.Render.SortingOrder 也叫 SortingLayer 可以理解为一个渲染层Group.优先级高于RenderQueue.数值越大表示渲染在上层,也就是后绘制 3.material.RenderQueue 顾名思义,渲染队列.数值越大越晚绘制. 4.Z 也就是深度,Z值越大,离相机越远,绘制顺序越靠前. 我们以UI为…
1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在inspector面板 _MainTex("Main Tex",2D) = "white"{} //名称("面板显示名称",数据类型) = 初始化 } //针对不同显卡可以有不同subshader,对应不同品质的渲染 SubShader{ Tags{&q…
Shader "Custom/OutLine" {Properties { _Color ("Main Color", Color) = (.5,.5,.5,1) _OutlineColor ("Outline Color", Color) = (0,0,0,1) _Outline ("Outline width", Range (0.0, 0.03)) = .005 _MainTex ("Base (RGB)&qu…
转自:http://blog.csdn.net/hippig/article/details/7858574 shadow volume 这个术语几乎是随着 DOOM3 的发布而成为FPS 玩家和图形学爱好者谈论的对象的.虽然这个游戏还没有上市,但是凭借 John Carmack 的传奇经历以及 DOOM3发布的一些让人惊讶的预览图片,我们仍然有理由认为它将会是 2004 年最热门的 FPS 游戏之一. id software向来都不吝惜为了达到最好的图像效果而使用最先进的渲染技术,这曾经使得玩…
一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMesh对应的Material.如一个桌子的Mesh,其实有二个材质,分别对应二个SubMesh,一个桌面和一个桌脚,点击桌面后,只有这个桌面高光,而不是整个桌子,并且能单独更换这个桌面的Material. 我们知道Unity中,Mesh和Ogre一样,也是可以有多个SubMesh,每个SubMesh有…
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中选取场景中的物体.比方为我方角色加入状态.为我方角色添加血量.选择要攻击的敌人等,通常我们使用鼠标来选择一个目标物体,当鼠标移动到目标物体上时,目标物体将显示轮廓线,此时就表示当前物体被选中,我们能够在此基础上为游戏物体进行一系列的操作.那么,这一功能怎样在Unity3D中实现呢?首先我们能够将问题分解为两个…
Shader "HairShader" { Properties { _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = "white" {} _Color ("Main Color", Color) = (0,0,0,1) _SpecularTex ("Specular (R) Gloss (G) Anisotropic Mask (B)", 2D) = "gr…
UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量)表达式  机位向量表达式使您能够在游戏运行时访问相机的指向向量.在要求材质于不同视角角度下呈现出不同效果时  对应unity shader中Input结构附加变量: float3 viewDir.对于内建的viewDir, 它和CameraVector一样是切线空间中的变量. 对于unity 如果…
写在前面 之前遇到过一些朋友问怎么在材质面板里定义类似于bool这种变量,控制一些代码的执行.我们当然可以写一个C#文件来自定义材质面板,就像Unity为Standard Shader写材质面板一样(你可以在built-in shader包里找到这些文件),但这样有时候太麻烦了.实际上,有一种更简单的方法,不需要写额外的C#文件就可以直接在shader里定义类似bool.enum这种简单的变量,Unity为这些变量提供了内置的材质面板.而这就是通过MaterialPropertyDrawer(当…
最近在看基础光照模型,比较感兴趣的是高光反射模型,有下列两种: 1.Phong模型 R = 2*N(dot(N, L)) - L specular = lightColor * SpecularColor*(max(V· R, 0)) ^shininess: 2.Blinn-Phong模型 引入了H,Blinn模型不仅在速度上更快,而且更符合实际. H = normalize(L+V) specular = lightColor * SpecularColor*(max(N· H, 0)) ^s…
Unity中 Image Effect 是Post Processing的一种方,Unity自身也提供很多Effect效果供使用.Image Effect的使用官方文档做了很多介绍,这里重点Post Processing 做一些介绍. 1. Post Processing workflow Render the scene to a render target / texture (screen-size, usually same format) Reset render target - e…
//预览图 //原理 一个摄像机CullingMask设置只可见"Distortion"的Layer(需要自己手动加),输入到一张RenderTexture,其实就是用于确定哪里要扭曲. 另外一个摄像机CullingMask设置成对除了"Distortion"的Layer可见,并挂上后期效果脚本. //Shader代码 Shader "Hidden/Distortion" { Properties { _MainTex ("Textur…
//效果图 //Shader代码 Shader "Hidden/Mosaic" { Properties { _MainTex ("Texture", 2D) = "white" {} _TileSize()) = 0.05 } SubShader { // No culling or depth Cull Off ZWrite Off ZTest Always Pass { CGPROGRAM #pragma vertex vert #prag…
运动模糊,代码如下: using UnityEngine; public class MotionBlurRenderer : PostEffectRenderer { [Range(0.1f, 0.9f)] [SerializeField] float m_blurAmount = 0.1f; RenderTexture m_accumulationTexture; void OnDisable() { DestroyImmediate(m_accumulationTexture); } pr…
均值模糊,也使用卷积来实现,之不过卷积中每个值均相等,且相加等于1. 代码如下, 子类: using UnityEngine; public class MeanBlurRenderer : PostEffectRenderer { protected override string ShaderName { get { return "Custom/Mean Blur"; } } } MeanBlurRenderer shader Shader "Custom/Mean B…
边缘检测的原理是利用一些边缘检测算子对图像进行卷积操作. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7232707.html 例如: 代码如下: using UnityEngine; public class EdgeDetectRenderer : PostEffectRenderer { [SerializeField] Color m_edgeColor; protected override void OnRenderImage(Render…
转 https://willweissman.wordpress.com/tutorials/shaders/unity-shaderlab-object-outlines/ Unity Shaderlab: Object Outlines One of the simplest and most useful effects that isn’t already present in Unity is object outlines. Screenshot from Left 4 Dead.…
https://en.wikibooks.org/wiki/Cg_Programming Basics Minimal Shader(about shaders, materials, and game objects) // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/Cg basic shader" { //defines the nam…
一.VR运行环境配置: 安装steam,在steam上安装SteamVR驱动. 在Unity项目中需要导入VRTool插件包(已上传服务器),里面包含两个插件一个是SteamVR插件,一个是VRTK插件,这两个插件也可以直接在Unity的商店中进行下载.这两个插件要求的Unity最低版本要5.6. 二.VR项目开发: 1.  基础组件: VR要实现人物在场景中的初始化需要以下物体: 这两个物体可以在VRTK中的任意示例场景中找到: 建议第二个例子中的物体.将这两个物体直接做成预制体,然后再将预制…
基于Shader实现的UGUI描边解决方案 前言 大扎好,我系狗猥.当大家都以为我鸽了的时候,我又出现了,这也是一种鸽.创业两年失败后归来,今天想给大家分享一个我最近研究出来的好康的,比游戏还刺激,还可以教你登dua郎喔(大误 这次给大家带来的是基于Shader实现的UGUI描边,也支持对Text组件使用. 首先请大家看看最终效果(上面放了一个Image和一个Text): (8102年了怎么还在舰 接下来,我会向大家介绍思路和具体实现过程.如果你想直接代到项目里使用,请自行跳转到本文最后,那里有…
OSG版本: vert #version varying out vec3 v; void main() { gl_FrontColor = gl_Color; gl_Position = ftransform(); v = gl_Vertex.xyz; } frag #version varying in vec3 v; uniform float osg_FrameTime; void main() { //gl_FragColor = vec4(1,0,0,1); gl_FragColor…