shader入门基础-透明效果二
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 clip 函数 在片原着色器中使用 clip 函数进行透明度测试,clip 参数可以是标量,也可以是矢量。如果给定的参数的任何一个分量是负数,就会舍弃当前 像素输出的颜色。discard 指令显示剔除片元。 void clip(float 4) { if (any(x<0)) ...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 clip 函数 在片原着色器中使用 clip 函数进行透明度测试,clip 参数可以是标量,也可以是矢量。如果给定的参数的任何一个分量是负数,就会舍弃当前 像素输出的颜色。discard 指令显示剔除片元。 void clip(float 4) { if (any(x<0)) ...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 透明度测试(Alpha Test) 当片元的透明度小于某个阈值时,对应片元就会被舍弃,被舍弃的片元不会再进行任何处理,不会对颜色缓冲产生任何影响,当片元透明度大于等于这个阈值的 时候,就会按照普通不透明的物体处理方式来处理,进行深度测试,深度写入等。透明度测试无法得到真正的半透明效果。 透明度...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 渐变纹理 学习如何使用渐变纹理来控制漫反射光照。 Shader "Practice/RampTex" { Properties { _RampTex ("Texture", 2D) = "white" {} _Color("Color Tint"...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 凹凸映射 使用一张纹理来修改模型表面的法线,为模型提供更多细节。 使用法线纹理进行凹凸映射 法线方向的分量范围在[-1,1],像素分量范围为[0,1],法线到像素的映射 $pixel = \frac{normal+1}{2}$. 我们在 shader 中对法线纹理采样后,需要进行反映射 $n...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解 光照模型实践,使用单张纹理代替漫反射颜色 高光公式 \[\mathtt{c}_{specular}=(\mathtt{c}_{light}\cdot\mathtt{m}_{specular})max(0,\vec n\cdot\vec h)^{m_{gloss}} \qquad \vec h=...
本文内容主要参考 《Unity shader 入门精要》一书,旨在总结所学知识与加深个人理解,为了表示方便,与书中公式略有差别。 漫反射 漫反射光照符合 兰伯特定律:反射光线强度与法线表面和光源方向的夹角的余弦值成正比。 公式 \(\mathtt{c}_{diffuse}=(\mathtt{c}_{light}\cdot \mathtt{m}_{diffuse})max(0,\vec n...
content 需求 在项目接近尾声的时候,由于本地化的差异,导致很多 ui 超过了显示框,这时候运营方提出 需要在部分地方加上滚动,当文字超过显示的框的时候,自动滚动。由于项目已经接近尾声,所以务必 改动要小。在不改变 UI 结构,以及方便策划快速更改的情况下,开发的组件。 实现 设置如图 using System; using System.Collections; us...
content cg 流程控制与循环 在前面的章节中shader 入门基础知识五提到过,cg 不支持 switch ,break,default,goto 等关键字,这里不再尝试,下面对 if else 和 for while 进行尝试。 如图,我们对于模型坐标小于 0 的地方给与红色,大于 0 的地方给与绿色,得到的是渐变从红到绿的颜色。 原因是片元着色器的输入是对着色器输出...
content Cg 入门三 swizzle 操作 通过 swizzle 操作,可以将 float2,或者 float2 的分量重新组成其他的 float3,float4。 这个时候 float2 的 x,y 分别是 1,0 新组成的 float4 则是(1,0,0,1)因此是红色。 可以同时使用分量,顺序也是可以打乱的。这里我们使用 float2 的分量,并且 y 在前,...
content Cg 入门二 C 语言和 Cg 语言的区别联系 前言 这里主要是我个人的理解,大家想要准确的解释,还是建议大家上 nvdia 官网读官方文档 Similar Operations That Must be Expressed Differently There are several changes that force the same operation to...