精华内容
下载资源
问答
  • Materialization FX 1.0 unity3d asset Unity插件下载 3d游戏开发 插件详情: 溶解 资源版本: V1.0 unity版本: 官方推荐Unity版本号:Unity5.5.1 or higher
  • Unity3D内置了很多Shader,文档很详细,自己翻一下.便于加深印象.   首先先解释下Unity3DShader.Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的.FX文件或者NVIDIA的CgFX有些类似。传统意义上...
    http://wenku.baidu.com/view/e82c4e196bd97f192279e922.html

    Unity3D置了很多Shader,文详细,自己翻一下.便于加深印象. 

          首先先解Unity3D的Shader.Unity里面的Shaders是使用一ShaderLab的编写的,同微.FX文件或者NVIDIA的CgFX有些似。传统上的vertex shader和pixel shader 是使用准的Cg/HLSL 编写的。(因此Unity文里面的Shader,都是指用ShaderLab编写的代

          然后我们来看下Unity3D自60多Shader。 Shader被分Normal,Transparent,Transparent Cutout,Self-llluminated,Reflective。由于量比多,分几篇幅一一介

          (一) Normal Shader Family

          这个家族一共9Shader,都是针对不透明的象的。

          (1) Vertex-Lit:

          最简单的一Shader之一,所有照射在物体上的光在一Pass里面渲染完,光源只在算。所以不有任何基于像素渲染得效果,比如normal mapping,light cookies和shadows.这个shader模型的剖分(物体几何描述变为形表示的程)非常敏感,如果你将点光源放在很靠近一立方体的一个顶点那里,立方体使用这个shader,光源只在角落算。基于像素光照的shader剖分有要求,在表现圆形高光上效果也很好。如果上述情况时你想要的效果,可以考使用一基于像素光照的shader或者增加模型的剖分。(增加

          来说这个shader的渲染代价比小。这个shader包含了2subshader,分别对应成管线和固定管线。是所有硬件都支持的一最基本的shader。如果设备支持可成管线,那使用可成管线subshader,否使用固定管线的。

          (2) Diffuse:

          Diffuse基于一个简单的光照模型-Lambertian,光照强度着物体表面和光入射角角的小而(即光垂直于表面强度最大)。光照的强度只和角度有系,和像机无。由于是一基于像素光照的shader,因此他有这类shader的优势,同他需要设备支持可程管线,如果设备不支持,使用Vertex-Lit这个Shader。

          来说这个shader渲染代价比小。

          (3) Specular

          Specular 使用和Diffuse相同的光照模型,但是添加了一察角度相的反射高光。这个称为Blinn-Phong光照模型。他包含了一反射强光,这个反射高光物体表面角度,光的入射角度以及察者角度都有系。这种高光算方法实际上是对实时光源模糊反射的一具有可行性的模。模糊的等inspector里面Shininess这个变量控制。

          主理的alpha通道被用来当Specular Map使用(有候也gloss map),了物体的反光率。理中alpha里面全黑 的部分完全不反光(即反光率0%)。而全白的的部分反光率100%。这个Map在的物体在不同的部分有不同的反光率的候非常有用。比如迹斑斑的金属会反光率低,而磨光的金反光率比高。口的反光率比皮高,而皮的反光率比棉衣服高。一精心制作的Specular Map将会让玩家身其境。如果目标设备不支持可程管线使用Vertex-Lit这个Shader。

           这个shader的渲染代价

           (4)Bumped Diffuse

           同Diffuse Shader一这个Shader基于Lambertian光照模型,同使用了normal mapping技术来增加物体表面细节。相于通增加剖分物体表面细节的方式,normal mapping不改物体的形,而是使用一张称为Normal Map的特殊来达这种效果。在normal map中,每象素的色代表了像素所在物体表面的法线,然后通过这个线(而不是通物体模型算而的法线来计算光照。可以Normal Map在算光照的程中“高效地修改”了整模型

           如何Normal maps:可以通过导入一普通的灰度(白色表示凸起,黑色表示凹Unity动将它转换为Normal Map。

           技术细节里使用Normal map是一Tangent space Normal Map”,Tangent space(正切空)是一模型物体表面的空。在这个中,z终从表面指向外面。Tangent space Normal Map相于另一称为Object space Normal Map”来说有点复杂,但是他有一些优势1)可以使用在各奇形怪的表面  2)便于在同一物体不同域或者不同物体间复

            具体Tangent Space Normal Map和Object Space Normal Map的区别,下次再

            如果这个shader失则会调Diffuse这个shader,一般而言,shader渲染代价低。

            (5) Bumped Specular

            和Specular一的光照模型,相比Specular而言,使用一Tangent Space Normal Map描述物体表面法向量的化,增加物体细节。(normal map具体Bumpped Diffuse)如果用失使用Specular这个shader,一般而言,这个shader的渲染代价大。

            (6) Parallax Diffuse

            Parallax Normal mapped与传统normal mapped一,但是“深度”的模更佳。外的深度效果是通Height Map(高度来实现的。Height Map在Normal map的alpha通道里面保存。全黑表示有高度,而白色表示有高度。通常或者砖块间的裂

            Parallax mapping的技简单,因此有些人工痕迹或者不太正常的效果出。尤其是,陡峭的高低转换在高度里面应该避免。在inspector里面height数值来调整高度的范,有造成物体不真实,凌的情。因此建使用高度化平的高度或者高度数值设置比低,表面看起

            这个shader的渲染代价相比bumped diffuse而言更大。如果这个Shader失使用Bumped Diffuse。

            (7) Parallax Specular

            Bumped Spcular相比,增加了一Height Map描述深度细节Height Map,parallax Diffuse。如果用失则调Bumped Specular这个Shader。

            (8) Decal

            这个Shader在unity文里面的描述和Unity3.0有明实现区别,文由于比老,07年的,官下的Built-in Shader里面,decal是使用可程管线实现的,就是,如果的机器不支持可程管线使用diffuse,因diffuse也不需要可程管线,所以只能使用vertex-lit。这个Shader除了主理之外,这个Shader是用了第二张纹理用描述细节。第二Decal()的理使用alpha通道确定是否覆盖主理。花用的理只是理的充。比如说你有一个砖砌的壁,可以使用一个砖块理作理,然后使用alpha通道的Decal理在壁的不同地方涂

            (9) Diffuse Detail 

            是一普通的diffuse shader加上一些据的shader。许你第二张纹理,称为Detail Texture。camera靠近的候,Detail Texture逐渐显示出,一般用于地形。比如当你使用一低分辨率的理拉升到整地形上的候。camera逐拉近,低分辨率的始模糊,不是我想要的效果。了避免这个效果,建一Detail 会将地形tile化。在这种模式下,着camera逐拉近,外的细节将会以避免出模糊的效果。

            Detail 理是覆盖在主理上面的。Detail理中深色的部分将会使得主深,而淡色的部分将会使主亮,Detail理通常是灰色。(Decal里面Decal理不同的是,Decal理是RGBA,通alpha控制Decal TextureMain Texture的融合,而Detail的理是RGB,直接是两张纹理的rgb通道分相乘再*2,就是Detail理中数值 = 0.5不,>0.5会变亮,<0.5加深)


    展开全文
  • Unity3DShader

    2016-12-28 08:20:20
    Shader编程提示instruction超限 解决方法,加上target3.0,提高版本,不过运行效率待考究。...unity3d中,mobil上的shader也可以改为双面显示,只要在shader里面加上culloff Shader Fallback 某些shader

    Shader编程提示instruction超限

    解决方法,加上target3.0,提高版本,不过运行效率待考究。


    Target不对的话,就算没有报错,,某些功能如挖洞也可能没有效果。


    双面shader

    unity3d中,mobil上的shader也可以改为双面显示,只要在shader里面加上culloff


    Shader Fallback

    某些shader不能够在android平台上使用,当打开shader的时候,会在最后边发现 

    这是

    这种shaderandroid平台上打包后加载,发现建筑变暗了,调查后得出的结论。


    Shader alpha test

    alpha test 设置为Greater0的时候,手机平台就不会提示androidclip




    展开全文
  • 这主要是自己博客专栏《【浅墨Unity3D Shader编程】》中推出的一些Shader代码的收集。 着色器专栏地址: : 推荐新的高品质Unity Shader项目| 推荐新的很棒的Unity Shader库 X-PostProcessing Libray,简称XPL,是...
  • Unity支持多种渲染路径。具体我们应该使如何使用渲染路径,取决于我们项目中的灯光、阴影。 渲染路径需要GPU的支持,如果GPU不支行该渲染...在Unity3d工程中,我们有三个地方可以设置渲染路径。 1.我们可以在Gr...

    Unity支持多种渲染路径。具体我们应该使如何使用渲染路径,取决于我们项目中的灯光、阴影。

    渲染路径需要GPU的支持,如果GPU不支行该渲染路径,将依次降级使用下一个Deffered -> Forward -> Vertex Lit。

     

    同一个项目可以用同一种渲染路径,也可以多个渲染路径混合着用。

    在Unity3d工程中,我们有三个地方可以设置渲染路径。

    1.我们可以在GraphicsSettings面版下全局设置渲染路径,默认是Forward即前向渲染。(见下图)

    2.不同的Camera可以有不同的渲染路径。(见下图)

    3.Shader的Pass中可以设置渲染路径。(见下图)

    果我们都使用指定Forward Rendering(默认),在shader的Pass中不做指定,那么使用的是VertexLit。

    Forward Rendering 前向渲染

    前向渲染渲染每个物体的时候会用到一个或多个Pass,具体用多少个Pass依赖于作用于该物体的灯光。

    前向渲染会根据灯光的设置以及这些灯光对物体的形象程度对这灯光进度一个重要程序排序。重要的灯光认真对待(效果好),不重要的灯光高效率对待(效果差),照射不到该物体的灯光不做处理。

     

    在前向渲染 (Forward Rendering) 中,影响每个对象的一定数量的最亮光源以全逐像素光照模式被渲染。然后,最多 4 个点光灯会逐顶点被计算。其他灯根据球谐函数 (SH) 进行计算,这种计算方式更快速,但只能得到近似值。根据以下内容判断某个光源是否是逐像素光源:

    • 渲染模式 (Render Mode) 设置为不重要 (Not Important) 的光源通常是逐顶点或球谐函数。
    • 最亮的方向灯通常为逐像素。
    • 渲染模式 (Render Mode) 设置为重要 (Important) 的光源通常是逐像素。
    • 如果以上内容导致光源数量小于当前像素光源数量 (Pixel Light Count)质量设置,则为了降低亮度,会有更多的光源以逐像素的方式进行渲染。

    BasePass和AddPass:

    • BasePass用一个逐像素方向灯和所有逐顶点、球谐函数光源渲染对象。该通道还从着色器中添加任何光照贴图、环境光照和放射性光照。该通道中渲染的方向灯可以有阴影 (Shadows)。请注意,使用了光照贴图的对象不会获得来自球谐函数光源的光照。
    • AddPass中处理其他逐像素光源在其他通道的渲染,一个通道对应一个光源。这些通道中的光源不能有阴影。

    效果图如下:

    核心代码:

    Name "FORWARD_BASE"
    "LightMode" = "ForwardBase"
    #pragma multi_compile_fwdbase
    #include "Lighting.cginc"
    
    Name "FORWARD_ADD"
    "LightMode" = "ForwardAdd"
    #pragma multi_compile_fwdadd
    #include "Lighting.cginc"
    #include "Autolight.cginc" 
    Blend One One
    
    #ifdef USING_DIRECTIONAL_LIGHT
      fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
    #else
      fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz - i.vertexWorldPos.xyz);
    #endif
      fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.vertexWorldPos.xyz);
    
    #ifdef USING_DIRECTIONAL_LIGHT
      fixed atten = 1.0;
    #else
      float3 lightCoord = mul(unity_WorldToLight, float4(i.vertexWorldPos, 1)).xyz;
      fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
    #endif

    下面上代码:

    Shader "mgo/study/forward_render_path"
    {
    	Properties
    	{
    		_MainTex ("Texture", 2D) = "white" {}
    		_SpecularTex("_SpecularTex", 2D) = "white" {}
    		_SpecularGloss("_SpecularGloss", Range(0.01, 100)) = 30
    	}
    	SubShader
    	{
    		Tags { "RenderType"="Opaque" }
    		LOD 100
    
    		Pass
    		{
    			Name "FORWARD_BASE"
    			Tags{ "LightMode" = "ForwardBase" }
    
    			CGPROGRAM
    			#pragma multi_compile_fwdbase
    			#pragma vertex vertBase
    			#pragma fragment fragBase
    			#include "UnityCG.cginc"
    			#include "Lighting.cginc"
    
    			struct appdata
    			{
    				float4 vertex : POSITION;
    				float2 uv : TEXCOORD0;
    				float3 normal : NORMAL;
    			};
    
    			struct v2f
    			{
    				float2 uv : TEXCOORD0;//纹理
    				float4 vertex : SV_POSITION;//裁剪空间下的顶点坐标
    				float3 worldNormal : TEXCOORD1;//世界空间下的法线
    				float3 vertexWorldPos : TEXCOORD2;//世界空间下的顶点坐标
    			};
    
    			uniform sampler2D _MainTex;
    			uniform sampler2D _SpecularTex;
    			uniform float4 _MainTex_ST;
    			uniform fixed _SpecularGloss;
    
    			v2f vertBase(appdata v)
    			{
    				v2f o;
    				o.vertex = UnityObjectToClipPos(v.vertex);
    				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    				o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject).xyz;
    				o.vertexWorldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
    				return o;
    			}
    			
    			fixed4 fragBase(v2f i) : SV_Target
    			{
    				fixed4 col = tex2D(_MainTex, i.uv);
    				fixed3 worldNormal = normalize(i.worldNormal);
    				fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
    				fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.vertexWorldPos.xyz);
    
    
    				fixed3 diffuse = _LightColor0.rgb * (dot(worldNormal, worldLight) * 0.5 + 0.5);
    				fixed3 hDir = normalize(viewDir + worldLight);
    				fixed3 specular = _LightColor0.rgb * pow(saturate(dot(worldNormal, hDir)), _SpecularGloss) * tex2D(_SpecularTex, i.uv).r;
    
    				col.rgb = (col.rgb * diffuse.rgb + specular);
    				return col;
    			}
    			ENDCG
    		}
    
    		Pass
    		{
    			Name "FORWARD_ADD"
    			Tags{ "LightMode" = "ForwardAdd" }
    			Blend One One
    
    
    			CGPROGRAM
    			#pragma multi_compile_fwdadd
    			#pragma vertex vertAdd
    			#pragma fragment fragAdd
    			#include "UnityCG.cginc"
    			#include "Lighting.cginc"
    			#include "Autolight.cginc" 
    
    			struct appdata
    			{
    				float4 vertex : POSITION;
    				float2 uv : TEXCOORD0;
    				float3 normal : NORMAL;
    			};
    
    			struct v2f
    			{
    				float2 uv : TEXCOORD0;//纹理
    				float4 vertex : SV_POSITION;//裁剪空间下的顶点坐标
    				float3 worldNormal : TEXCOORD1;//世界空间下的法线
    				float3 vertexWorldPos : TEXCOORD2;//世界空间下的顶点坐标
    			};
    
    			uniform sampler2D _MainTex;
    			uniform sampler2D _SpecularTex;
    			uniform float4 _MainTex_ST;
    			uniform fixed _SpecularGloss;
    
    			v2f vertAdd(appdata v)
    			{
    				v2f o;
    				o.vertex = UnityObjectToClipPos(v.vertex);
    				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    				o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject).xyz;
    				o.vertexWorldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
    				return o;
    			}
    
    			fixed4 fragAdd(v2f i) : SV_Target
    			{
    				fixed4 col = tex2D(_MainTex, i.uv);
    				fixed3 worldNormal = normalize(i.worldNormal);
    #ifdef USING_DIRECTIONAL_LIGHT
    				fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
    #else
    				fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz - i.vertexWorldPos.xyz);
    #endif
    				fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.vertexWorldPos.xyz);
    
    #ifdef USING_DIRECTIONAL_LIGHT
    				fixed atten = 1.0;
    #else
    				float3 lightCoord = mul(unity_WorldToLight, float4(i.vertexWorldPos, 1)).xyz;
    				fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
    
    #endif
    
    				fixed3 diffuse = _LightColor0.rgb * (dot(worldNormal, worldLight) * 0.5 + 0.5) * atten;
    				fixed3 hDir = normalize(viewDir + worldLight);
    				fixed3 specular = _LightColor0.rgb * pow(saturate(dot(worldNormal, hDir)), _SpecularGloss) * tex2D(_SpecularTex, i.uv).r * atten;
    
    				col.rgb = (col.rgb * diffuse.rgb + specular);
    				return col;
    			}
    			ENDCG
    		}
    
    
    	}
    }
    

     

     

    展开全文
  • unity3d Cloth Shader

    2017-08-16 18:27:21
    unity3d 着色阴影插件 Cloth Shader
  • Unity3D 自带Shader

    2016-04-18 10:38:36
    Unity3d自带的shader,可以通过官网shader来学习shader编程
  • Awesome-Unity-Shader, 分享炫酷的Unity3D着色器| 关于超酷的Unity3D着色程序 Awesome-Unity-ShaderShader专栏地址:http://blog.csdn.net/column/details/unity3d-shader.html卷 1凹凸纹理显示 自选边缘颜色和强度...
  • Unity3d Glass Shader

    2013-04-24 15:31:05
    Unity3d Glass Shader
  • unity3d 4.x可用!!5.x没测试过,Unity3d 倒计时shader 技能冷却shder cooldown shader
  • Unity3d Shader

    千次阅读 2014-06-12 09:37:47
    Unity3d Shader的属性块结构如下:

     half4 LightingName (SurfaceOutput s, half3 lightDir, 
    half atten){}
    This function is used for forward rendering when the view direction is 
    not needed.

    Unity3d Shader的属性块结构如下:

    Shader 属性

    其中属性类型包括:


    三种自定义光照模型方法:

     
    half4 LightingName (SurfaceOutput s, half3 lightDir, half atten){}
    //This function is used for forward rendering when the view direction is not needed.
    half4 LightingName (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten){}
    //This function is used in forward rendering when a view direction is needed.
    half4 LightingName_PrePass (SurfaceOutput s, half4 light){}
    //This function is used when you are using deferred rendering for your project.


    展开全文
  • [shader]Unity3D地形

    千次阅读 2015-12-03 10:20:35
    Unity的地形shader
  • unity3d shader入门精要

    2018-05-04 23:30:50
    unity3d shader 入门文档 总结shader基本结构 和知识 非常实用
  • Unity3D】夏威夷场景 for Unity3D Shader编程 by浅墨

    千次下载 热门讨论 2014-11-03 17:02:35
    配套博文:《【浅墨Unity3D Shader编程】之一 游戏场景的创建 & 第一个Shader的书写》 博文链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 说明 --------------------------------------------...
  • Unity3D shader简介

    2017-11-26 22:50:00
    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易。毫无疑问,shader(着色器)编码,仍有很长的路要走。shader是一个专门运行在GPU的程序,经常被神秘包围,它最终绘制3D模型的三角形。如果...
  • Unity3D Shader指南

    2015-03-02 13:57:08
    Unity3D Shader入门指南(一) Unity3D Shader入门指南(二)
  • unity3dshader源码

    2019-01-17 15:39:53
    Unity3D 2018.3.0f2 的shader源码 可以作为学习shader的参考,也可以直接扩展之后在unity中使用
  • Shader in Unity3d

    2012-09-23 19:23:42
    Place holder....
  • unity3D双面Shader

    热门讨论 2014-01-16 09:26:58
    在网上看到一个双面的unity3DShader拿来与大家一起分享,双面/可灯光烘焙
  • // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "Standard(Two Side)"{Properties{_Color("Color", Color) = (1,1,1,1)_MainTex("Albedo", 2D) = ...
  • unity3d 通透材质shader

    2015-10-05 16:38:11
    unity3d 通透材质shader,Subsurface scatteringshader
  • Unity3D Shader

    2017-01-13 11:08:16
    本篇文章中,我们学习了Unity Shader的基本写法框架,以及学习了Shader中Properties(属性)的详细写法,光照、材质与颜色的具体写法。写了6个Shader作为本文Shader讲解的实战内容,最后创建了一个逼真的暴风雪场景...
  • unity3dshader

    2018-07-03 11:16:41
    unity3dshader : https://catlikecoding.com/

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,552
精华内容 1,420
关键字:

shaderunity3d