摘要: 对于金属状、玻璃状物体,它们的表面能映射出周围环境。如果碰上这类的物体,用上我们本篇的 shader,就能让这种物体显得更加的逼真。制作Cubemap写Shader之前呢,要用到一个Cubemap,可以用Unity的编辑器生成.代码如下:using UnityEngine;using UnityEd... 阅读全文
posted @ 2015-11-26 13:08 WongSiuming 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 就我目前所知道的,在光照这吧,主要有三种算法,第一种漫反射的Lambert已经介绍过了,接下来还有BlinnPhong和Phong,都是用来做高光的.那么我们先来看第一种,先看代码BlinnPhong光照模型 inline float4 LightingSpecular(SurfaceOutp... 阅读全文
posted @ 2015-11-26 13:06 WongSiuming 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 法线贴图据说很常用,可以用来表现物体的凹凸感.使用时,需要有一张原图和用来记录法线的法线贴图.贴图:法线贴图:效果对比(右边加了法线):代码Shader "Custom/11.26/3" { Properties { _MainTex ("Base (RGB)", 2D) = "... 阅读全文
posted @ 2015-11-26 13:05 WongSiuming 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 上一篇讲了自定义光照的HalfLambert,这一次和它有些类似,但是计算的时候,不再用方向和atten相乘了.将光入射方向与法相的点乘积HalfLam作为坐标,找到RampTexture中(HalfLam,HalfLam)点的rgb值作为混合值与s.的Albedo和入射光颜色相乘.代码如下:Sha... 阅读全文
posted @ 2015-11-26 13:04 WongSiuming 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 一.Lambert在SubShader中的CG片段里,需要指定光照函数,一般为Lambert,即默认的拉姆伯特#pragma surface surf LambertLambert的函数是默认的,代码同下:inline float4 LightingBaseDiffuse(SurfaceOutput... 阅读全文
posted @ 2015-11-26 13:03 WongSiuming 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 每一个Material都要选择一个使用的Shader.每一个Material都会存储自己的值我们新建一个混色的Shader,再分别创建四个Material,其效果如下:Shader代码如下:Shader"Custom/11.25/2"{ Properties{ _Value("C... 阅读全文
posted @ 2015-11-26 13:02 WongSiuming 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 写在前面本系列随笔是看化石大大的Unity Shader编程做的图书笔记,原课程地址:Unity Shader编程Shader简介Shader直译的话意思是"着色器",是在可编程的渲染管线中对渲染过程进行控制的,具体怎样作用我们以后再说,现在我们先关注在Unity中用ShaderLab怎样实现一些常... 阅读全文
posted @ 2015-11-26 11:48 WongSiuming 阅读(250) 评论(0) 推荐(0) 编辑