http://www.cnblogs.com/polobymulberry/p/4314147.html http://www.sikiedu.com/my/course/37 时间: 2024-10-25 04:07:16
Unity Shader 学习之旅-初探 unity shader 图形图像 美丽的梦和美丽的诗一样 都是可遇而不可求的--席慕蓉 最简单的顶点片元着色器 顶点片元着色器基本结构 Unity Shader基本结构:Shader ,Properties,SubShder,Fallback等. 结构 Shader "ShaderName"{ Properties{ //属性,暴露在inspector面板上 } SubShader{ //针对显卡A的SubShader Pass{
基本问题 试想我们的美术做了一个3D模型,然后渲染引擎把模型渲染到屏幕上.我们还可以选定不同的视角,模拟不同的光照条件去观察模型.现在来分析一下这个过程.如果说我们把这个过程看成一个函数,那么函数的输出就是屏幕上的图像.确切地说,是屏幕上的每个像素.这个函数的主要输入是这个3D模型,我们观察的视角,光照情况等等因素.渲染过程就是给出这些因素决定每个像素值的过程. 首先来看模型.模型通常是由可视化的建模软件制作,看上去是一个"实体".然而从计算机的角度来说,模型文件只不过是包含渲染它所需
shader如下: Shader "Custom/Diffuse Fragment-Level" { Properties { _Diffuse ("Diffuse", Color) = (1,1,1,1) } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { Tags { "LightMode"="ForwardBase"
半兰伯特光照模型,为Valve公司在开发游戏<半条命>时提出的一种技术,用于解决漫反射光无法到达区域无任凭明暗变化,丢失模型细节表现的问题. 其公式如下: Cdiffuse = Clight * mdiffuse * ( dot(n, l) * 0.5 +0.5 ) 通过这样的方式,将dot(n, l)的结果从[-1,1]映射到[0,1]的范围. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7083289.html shader如下: Shader
使用unity AutoLight.cginc文件里的内置函数 UNITY_LIGHT_ATTENUATION shader如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/Forward Rendering" { Properties { _MainTex("Main Texture", 2D) = "
Unity的屏幕后期处理效果,使用MonoBehaviour.OnRenderImage来实现. 如代码如下: PostEffectRenderer: 1 using UnityEngine; 2 3 [RequireComponent(typeof(Camera))] 4 public abstract class PostEffectRenderer : GameBehaviour 5 { 6 protected abstract string ShaderName { get; } 7 8
上一章我写了渲染管线,中间提到了shader的作用,我们的大shader同学主要就是负责被CPU指派到GPU中做一些如顶点转换,关照模型,光栅化等操作的. 大shader有两种类型,他们分别是Vs[顶点着色器] 和 Ps[像素着色器].. 他们可以同时存在,也可以分开存在,没有任何使用限制. 当时如果同时存在的话,必须Vs执行完成后再交给Ps处理. 他们两个家伙是配合固定流程管线而存在的.
Blinn-Phong光照模型不用计算反射方向,计算公式如下: h = normalize(v + l); Cspecular = Clight * mspecular * pow(max(0, dot(n, h), gloss)) 转载请注明出处:http://www.cnblogs.com/jietian331/p/7097201.html shader如下: 1 Shader "Custom/Specular Blinn-Phong" 2 { 3 Properties 4 { 5
高斯模糊,见 百度百科. 也使用卷积来实现,每个卷积元素的公式为: 其中б是标准方差,一般取值为1. x和y分别对应当前位置到卷积中心的整数距离. 由于需要对高斯核中的权重进行归一化,即使所有权重相加为1,因此e前面的系数实际不会对结果产生任何影响. 综上,公式简化为: G(x,y) = e-(x*x+y*y)/2 一个5 * 5的高斯核计算代码如下: 1 using System; 2 3 namespace TestShell 4 { 5 class Program 6 { 7 static