unity_4LightPosX0

作者:追风剑情 发布于:2014-7-10 23:13 分类:Shader

Shader "Custom/LightPosX0" { SubShader { Pass { Tags { "LightMode"="ForwardBase" } CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase #include "...

阅读全文>>

标签: unity_4LightPosX0

评论(0) 浏览(7177)

固定管线

作者:追风剑情 发布于:2014-7-2 22:57 分类:Shader

   固定管线是在老一代GPU能力比较有限时,对Shader的约束性比较高的一种形态。为了市场占有率,新一代的显卡仍对其有所选择地进行支持,但是会在未来逐步被淘汰。在ShaderLab中,固定管线的形态和语法和NVIDIA的CgFX以及微软的FX文件比较类似。 示例: Shader "Custom/Shader_Fixed" { Properties ...

阅读全文>>

标签: 固定管线

评论(0) 浏览(4322)

vertex+fragment Shader

作者:追风剑情 发布于:2014-7-1 22:15 分类:Shader

如果你想自己处理照明,可以写vertex+fragment Shader, 这是Unity中对可编程Shader的一种支持。 Shader "Custom/Shader_VF" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "Queue"="Geometry...

阅读全文>>

标签: vertex fragment

评论(0) 浏览(6057)

Pass执行规则

作者:追风剑情 发布于:2014-6-30 22:03 分类:Shader

   Unity在Deferred渲染路径下,则会寻找可在Deferred渲染模式下的Pass然后返回,并不会执行其他渲染路径下的Pass,但是如果找不到Deferred状态下的Pass,则会再寻找Forward模式下的Pass并执行,然后返回,如果Forward模式下的Pass依然没有找到,则会寻找VertexLit模式下的Pass并执行。在Forward渲染路径下,会优先寻...

阅读全文>>

标签: Pass

评论(0) 浏览(3239)

LOD

作者:追风剑情 发布于:2014-6-29 21:06 分类:Shader

   通过给SubShader设定一个整型Level Of Detail,即LOD数值,可以在运行时根据硬件设备能力来决定是否使用此Shader,以及使用哪一个层级的SubShader 一、新建一个设置LOD的测试脚本 using UnityEngine; using System.Collections; public class LOD_Tes...

阅读全文>>

标签: LOD

评论(0) 浏览(4308)

纹理置灰

作者:追风剑情 发布于:2014-6-28 20:43 分类:Shader

原理:通过Luminance宏输出_MainTex的灰度值。 Shader "Shader_tex2D" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" } LOD 200 CGPROGRAM ...

阅读全文>>

标签: Luminance

评论(0) 浏览(4324)

纹理采样(tex2D)

作者:追风剑情 发布于:2014-6-27 21:25 分类:Shader

一、新建个Shader Shader "Shader_tex2D" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" } LOD 200 CGPROGRAM //声明表面着色函数并设置光照模式...

阅读全文>>

标签: tex2D

评论(0) 浏览(4979)

半透明Cube

作者:追风剑情 发布于:2014-6-26 22:41 分类:Shader

一、新建一个Shader 操作流程参见http://www.devacg.com/article/63.html Shader "RedCube" { Properties { _CubeAlpha ("Alpha", Range(0, 1)) = 0.5 } SubShader { Tags { "RenderType" = "Opaqu...

阅读全文>>

标签: Cube Alpha

评论(0) 浏览(3049)

用Shader设置Cube颜色

作者:追风剑情 发布于:2014-6-21 1:45 分类:Shader

一、创建一个Shader文件 Shader "RedCube" { SubShader { Tags { "RenderType" = "Opaque" } CGPROGRAM //声明表面着色函数并设置光照模式为Lambert(漫反射) #pragma surface surf Lambert struct Input { float4 col...

阅读全文>>

评论(0) 浏览(5884)

顶点片元着色器

作者:追风剑情 发布于:2014-6-17 21:59 分类:Shader

   顶点片元着色器不使用灯光交互,实际着色器代码用CG或HLSL语言编写,嵌入在着色器的通道块中。在着色器开始处,可以使用编译指令#pragma,常用编译指令如表所示: 顶点片元着色器常用编译指令 编译指令 说明 ...

阅读全文>>

评论(0) 浏览(3805)

表面着色器

作者:追风剑情 发布于:2014-6-12 22:14 分类:Shader

   不同于固定功能着色器,表面着色器和顶点片元着色器的实际着色器代码使用CG或HLSL编写的。    表面着色器必须像其他着色器一样放在CGPROGRAM和ENDCG中间,但它必须放在子着色器块中,不能放在通道中,表面着色器将在多个通道内编译自己,同时使用#pragma surface指令,以声明它是一个表面着色器,该指令如下: #...

阅读全文>>

评论(0) 浏览(4649)

光源对物体照明的分类

作者:追风剑情 发布于:2014-6-7 23:25 分类:Shader

间接照明    在物体所处的环境中,我们可以把照射到物体上的光源简单地分为直接照明和间接照明。间接照明是光在物体间传播后,最终又对物体形成照明(如:3d Max中的VRay渲染器)。 直接照明    如果不考虑光线在物体间的传播,也不考虑光线在物体内部的传播,则光线对物体直接照明。我们把照明的结果分为漫反射和镜面反射两种,...

阅读全文>>

评论(0) 浏览(3501)

绑定通道(BindChannels)

作者:追风剑情 发布于:2014-6-6 21:22 分类:Shader

   绑定通道(BindChannels)命令可以指定顶点数据如何映射到显卡中。使用顶点程序时,绑定通道将没有效果,绑定受顶点程序输入控制。    默认情况下,Unity会自动计算并绑定,但在某些情况下,要使用自定义绑定。例如,在第一个纹理处理阶段映射主UV,然后在第二个纹理处理阶段使用次要UV,或者告诉硬件需要考虑顶点颜色。绑定通道常用语法如下...

阅读全文>>

标签: BindChannels

评论(0) 浏览(9110)

通道标签

作者:追风剑情 发布于:2014-6-6 0:09 分类:Shader

   通道标签与子着色器标签语法相同。通道标签用来控制光照管线(环境光照、顶点光照和像素光照等)中这个通道所扮演的角色及其他一些设置。以下标签只能在通道中(而不是在子着色器中)使用。 LightMode    光照模式标签,它定义了在光照管线中通道的角色。但是,这些标签很少会被使用,大多数情况下需要和光照进行互动的着色器会被写成表面着...

阅读全文>>

标签: 通道标签

评论(0) 浏览(2967)

混合

作者:追风剑情 发布于:2014-6-4 23:51 分类:Shader

混合是用来制作透明物体的。在所有着色器执行完毕,所有纹理都被应用,所有像素准备被呈现到屏幕之后,使用Blend命令来操作这些像素进行混合。 混合是将源色和目标色以某种方式混合生成特效的技术。混合常用来绘制透明或半透明的物体。混合操作只能在RGBA模式下进行,颜色索引模式下无法指定Alpha值。物体的绘制顺序会影响到OpenGL的混合处理。Blend常用语法如下所列。 Ble...

阅读全文>>

标签: 混合

评论(0) 浏览(3493)

Alpha测试

作者:追风剑情 发布于:2014-6-1 16:52 分类:Shader

   透明度测试是阻止像素被写到屏幕的最后机会。在最终渲染出的颜色被计算出来之后,可选择通过将颜色的透明度值和一个固定值比较。如果比较的结果失败,像素将不会写到显示输出中。常用语法如下。 AlphaTest 开关状态 Off(缺省)渲染所有像素,On开启透明度测试。 AlphaTest 比较模式 测试值 设置透明度测试只渲染透明度...

阅读全文>>

标签: Alpha测试

评论(0) 浏览(3436)

GPU编程

作者:追风剑情 发布于:2014-6-1 0:39 分类:Shader

目前这种面向GPU的编程有3种高级图像语言可供选择: 微软提供了HLSL(High Level Shading Language),是通过Direct3D图形软件库来写Shader程序的语言。 OpenGL提供了GLSL(OpenGL Shading Language)来写Shader程序。 NVIDIA提供了Cg(C for graphics)语言。NVIDI...

阅读全文>>

标签: GPU编程

评论(0) 浏览(3158)

雾(Fog)

作者:追风剑情 发布于:2014-5-30 22:15 分类:Shader

雾化是通过混合已生成的像素的颜色和基于到镜头的距离来确定的一个常量来完成。雾化不会改变已经混合的像素的透明度值,只是改变RGB值。雾命令语法如下。 Fog { 雾命令 } 常用雾命令 Mode雾模式 设置雾模式。可选模式有Off, Global(默认项), Linear...

阅读全文>>

评论(0) 浏览(3151)

引用另个Shader中的Pass块

作者:追风剑情 发布于:2014-5-30 2:08 分类:Shader

Shader "Tut/NewBie/SecondShader" { Pass { Name "MYM" Material { Diffuse(1,0.7,0.4,1) Ambient(1,0.7,0.4,1) } Lighting On SetTexture[_] { combine primary } } } 引用另个文件的Pass块 ...

阅读全文>>

标签: Pass

评论(0) 浏览(3349)

纹理处理

作者:追风剑情 发布于:2014-5-28 22:15 分类:Shader

    基本的顶点照明计算完成以后,将进行纹理设置。在ShaderLab中用SetTexture命令来设置纹理。当使用片元程序时SetTexture命令无效,在这种情况下像素操作完全在片元程序中完成。     纹理处理是在做旧式的合并效果。在一个通道中可以使用多个SetTexture命令——所有的纹理应用都在一个队列当中,就像绘制程序中...

阅读全文>>

评论(0) 浏览(3389)

剪裁和深度测试

作者:追风剑情 发布于:2014-5-27 22:26 分类:Shader

   剪裁是一种通过不渲染背对摄像机的几何面来提高性能的优化措施。所有几何体都包含正面和反面。剪裁基于大多数对象都是封闭的事实。例如一个立方体,摄像机无法看到背离摄像机的那一面(总是只有一个面面向前方),因此不需要绘制出背面。因此也被称做背面剪裁。    使用深度测试使渲染看起来更加真实,而且可以保证场景中的对象被遮挡的部分不参与绘制。相关命令如...

阅读全文>>

评论(0) 浏览(3771)

通道渲染命令

作者:追风剑情 发布于:2014-5-26 23:23 分类:Shader

颜色、材质和光照     顶点颜色和光照是对任何要渲染的几何体所添加的第一步效果。这个操作处在顶点级别,用于计算在纹理被应用之前被使用的基础颜色。     材质和光照参数被用于控制内置顶点光照。顶点光照是Direct3D/OpenGL标准的按顶点计算的光照模式。光照打开时,光照受材质块,颜色材质和平行高光命令的影响。相关命令...

阅读全文>>

评论(0) 浏览(4129)

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号