unity

Unity Fresnel Hero(Dota2) Shader

我的梦境 提交于 2020-01-25 00:24:00
Shader "HeroShader" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _RimColor ("Rim Color", Color) = (0.97,0.88,1,0.75) _RimPower ("Rim Power", Float) = 2.5 _Fresnel ("Fresnel Value", Float) = 0.28 _MainTex ("Base (RGB)", 2D) = "white" {} _BumpMap ("Bump (RGB)", 2D) = "bump" {} _SpecularTex ("Specular Level (R) Gloss (G)", 2D) = "gray" {} _RimTex ("Rim ramp (RGB) Fresnel ramp (A)", 2D) = " grey" {} _WrapTex ("Wrap ramp (RGBA)", 2D) = "black" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.5 } SubShader { Tags { "RenderType" = "Opaque" } AlphaTest Greater [_Cutoff] Blend Off Cull Off

unity制作小地图

杀马特。学长 韩版系。学妹 提交于 2020-01-24 23:09:22
在很多游戏中都设计有小地图 小地图可以很直观的了解我们现在的位置等信息 然后这篇博客给大家介绍一下小地图的实现 首先创建一个摄像机(摄取地图全景)把它放在地图的正上方 调整好角度等 然后在project面板下创建一个Renderer texture 然后在场景下创建一个RawImage 然后把刚刚创建的Renderer texture拖到RawImage上边 然后在unity中调整好大小即可 然后在这里我给大家提供一种很简单的在下搜地图中修改主图标的方法 因为在游戏中我们的主角可能很小 但在小地图中的话 可能很难找到现在的位置等信息 我们给主角添加一个Sphere(修改喜欢的颜色) 给他的is Trigger勾选上 然后把它的layer设置为一个特别的 在小地图的摄像机上设置可渲染 在其他的摄像机上设置为不可渲染 把对勾去掉就行 然后我把我的成果给大家看下 其中的绿色就是主角的位置(他会实时更新) 这种方法的缺点就是如果放大的话会有些糊 按照一定比例缩小之后的效果还是比较好的 如果你也是unity爱好者 欢迎关注我的博客 我会在这里持续更新我的学习过程 来源: CSDN 作者: 头号理想 链接: https://blog.csdn.net/weixin_44302602/article/details/104070634

Unity Lighting - Choosing a Lighting Technique 选择照明技术(一)

a 夏天 提交于 2020-01-24 14:42:11
Choosing a Lighting Technique 选择照明技术 https://unity3d.com/cn/learn/tutorials/topics/graphics/choosing-lighting-technique?playlist=17102 Broadly speaking, lighting in Unity can be considered as either ‘realtime’ or ‘precomputed’ in some way and both techniques can be used in combination to create immersive scene lighting. 一般来说,Unity中的灯光可以被认为是“实时”或“预先计算”的,并且两种技术都可以结合使用来创建逼真的场景照明。 In this section we will give a brief overview of what opportunities the different techniques offer, their relative advantages and individual performance characteristics. 在本节中,我们将简要概述不同技术提供的机会,其相对优势和个人性能特征。 Realtime

Unity DOTS physics

六月ゝ 毕业季﹏ 提交于 2020-01-24 04:26:30
由于官方暂无文档,且为临时版本,随时可能更新,所以本文档内容皆为胡编乱造,造谣生事,事在人为,为所欲为,为所欲为,为所欲为,为所欲为,为所欲为 1. package环境 Entities Hybrid.Renderer Burst Collections Jobs Mathematics Unity Physics 2. GameObject转Entity 添加 convertToEntity ,原GameObject中自带的 collider 和 rigidbody 会自动转换为 PhysicsShape 和 PhysicsBody ,但仍然建议手动移除后重新添加新的Physics脚本 3. Physics Debug和 物理引擎设置 新建一个空GO,并添加脚本: converToEntity , physicsStep , physicsDebugDisplay UnityPhysics貌似存在些计算上的bug,如: 两个垂直放置的静止的GO,会发生位移(HavokPhysics中无该问题): 4. 鼠标点击与碰撞检测 碰撞检测关键类: CollisionWorld namespace Unity . Physics { public struct CollisionWorld : ICollidable , IDisposable , ICloneable { public

Unity项目中world space状态下的UGUI始终渲染在最上层

为君一笑 提交于 2020-01-23 03:36:50
Unity项目中world space状态下的UGUI始终渲染在最上层 简介 shader 简介 使用shader创建材质球,赋值到UGUI的对象上,使该UGUI对象始终渲染在最上层。 原文章中是在制作VR项目时,但其实在除Screen Space-Overlay状态下,都可使用。只要符合实际需求即可。 因为拥有该shader的UGUI不会被一般的3D物体所遮挡,故要根据具体需求使用。 shader shader出自: https://blog.csdn.net/u013032852/article/details/77642262 Shader "UI/Overlay" { Properties { [ PerRendererData ] _MainTex ( "Font Texture" , 2 D ) = "white" { } _Color ( "Tint" , Color ) = ( 1 , 1 , 1 , 1 ) _StencilComp ( "Stencil Comparison" , Float ) = 8 _Stencil ( "Stencil ID" , Float ) = 0 _StencilOp ( "Stencil Operation" , Float ) = 0 _StencilWriteMask ( "Stencil Write Mask" ,

Unity 使用多线程来写日志文件

為{幸葍}努か 提交于 2020-01-22 19:11:09
目的 自动写日志文件功能,但是不能影响游戏性能,故使用多线程来写日志。 源码 /// <summary> /// 日志文件模块,使用多线程来进行写日志文件 /// </summary> public class LogFileModule { private static LogFileModule sLogFileModule ; /// <summary> /// 开启写日志 /// </summary> public static void Open ( ) { if ( sLogFileModule == null ) { sLogFileModule = new LogFileModule ( ) ; } } public static void Close ( ) { if ( sLogFileModule != null ) { sLogFileModule . Dispose ( ) ; sLogFileModule = null ; } } # region 私有 private class LogData { public string log { get ; set ; } public string trace { get ; set ; } public LogType level { get ; set ; } } private

【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader

浪尽此生 提交于 2020-01-22 19:09:03
本文为翻译,附上 原文链接 。 转载请注明出处—— polobymulberry-博客园 。 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shader。 在shader中学习更多不同参考坐标系(空间space)以及其作用。 深入学习一个实用的fragment shader。 学习矩阵相乘和Unity内建矩阵的使用。 该教程比 第五篇教程 更实用。 准备工作 为了实现一个描边的toon shader,我们需要做的是: 为模型描边。 将 第四篇文章 中的介绍的toon shader(使用的是surface shader)移植到vertex&fragment shader中。 描边 有很多方法进行描边,在 第四篇文章 中,我们使用了rim lighting(边缘光照)来给我们人物加上描边效果。现在我们采用另一种方法,额外使用一个Pass改善已有的描边效果。 不同于之前描边效果的实现,在这篇教程中,你可以将你看不到的模型部分(比如背面)放大一些,再渲染成全黑,这样也是可以实现描边效果的。这种方法可以将原模型的正面完好无损呈现出来。 所以我们首先试着: 单独写一个仅仅用来绘制模型背面的Pass。 扩展模型背面的顶点,使其看起来变大了一些。 下面这个Pass就是用来仅仅绘制模型背面(Cull Front,剔除正面的多边形): Pass

关于Unity中Shader的使用

你离开我真会死。 提交于 2020-01-22 19:08:44
在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示。 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader Unity坐标系转换 1: transform.localToWorldMatrix 局部转世界的矩阵; 2: transfrom.worldToLocalMatrix 世界坐标转局部坐标矩阵;  MultiplyPoint, MultiplyPoint3x4 MultiplayVector 来进行坐标变换; 4: shader中 左乘_World2Object矩阵来实现世界坐标转局部坐标变换; 5: shader中左乘_Object2World矩阵来实现局部转世界的转换; 6: UNITY_MATRIX_MV 基本变换矩阵 x 摄像机矩阵; 7: UNITY_MATRIX_MVP 基本变换矩阵x摄像机矩阵x投影矩阵; 8: UNITY_MATRIX_V 摄像机矩阵; 9: UNITY_MATRIX_P 投影矩阵; 10: UNITY_MATRIX_VP摄像机矩阵x投影矩阵; 11: UNITY_MATRIX_T_MV (基本变换矩阵 x 摄像机矩阵) 转置矩阵; 12: UNITY_MATRIX_IT_MV(基本变换矩阵 x 摄像机矩阵) 的逆转置矩阵; 13: UNITY

unity中shader常用方法

自古美人都是妖i 提交于 2020-01-22 19:07:16
今天给大家列出来shader中常用的一些函数,函数后面有释义,大家可以打印出来,或者在写shader的时候来这篇文章查阅,看看你需要用到哪些。 Cg提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等), 有些函数直接和 GPU 指令相对应,所以执行效率非常高。 这些函数来源于文档,我为大家筛选出了常用的,去掉了基本用不到的函数。 数学函数: abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1],返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回 ture;否则返回 flase。&&运算 any(x) 输入参数只要有其中一个不为0,则返回 true。||运算 asin(x) 反正弦函数,输入参数取值区间为[−1,1],返回角度值范围为[−π/2 ,π/2 ] atan(x) 反正切函数,返回角度值范围为⎡−π/2 ,π/2⎤ atan2(y,x) 计算y/x 的反正切值。实际上和atan(x)函数功能完全一样,至少输入参数不同。atan(x) = atan2(x, float(1)) ceil(x) 对输入参数向上取整。例如:ceil(float(1.3)),其返回值为 2.0 clamp(x,a,b) 如果x 值小于 a,则返回a;如果 x 值大于 b,返回b;否则,返回 x cos(x)

Unity3D中的Shader

女生的网名这么多〃 提交于 2020-01-22 19:05:00
简单的说,Shader是为渲染管线中的特定处理阶段提供算法的一段代码。Shader是伴随着可编程渲染管线出现的,从而可以对渲染过程加以控制。 1. Unity提供了很多内建的Shader,这些可以从官网下载,打开looking for older version的链接就能看到Build-in shaders。选择合适的Shader很重要,以下是开销从低到高的排序: (1)Unlit:仅使用纹理颜色,不受光照影响 (2)VertexLit:顶点光照 (3)Diffuse:漫反射 (4)Specular:在漫反射基础上增加高光计算 (5)Normal mapped:法线贴图,增加了一张法线贴图和几个着色器指令 (6)Normal Mapped Specular:带高光法线贴图 (7)Parallax Normal Mapped:视差法线贴图,增加了视差贴图的计算开销 (8)Parallax Normal Mapped Specular:带高光视差法线贴图 对于现在流行的移动平台游戏,Unity提供了几种专门的着色器放在Shader->Mobile下,它们是专门优化过的。 2. 在Unity中,可以编写3种类型的Shader: 表面着色器(Surface Shaders):最常用的Shader,可以与灯光、阴影、投影器交互,以Cg/HLSL语言进行编写,不涉及光照时尽量不要使用。