庄懂着色器_L05_镜面反射
庄懂-BoyanTata的个人空间_哔哩哔哩_Bilibili
Shader "AP01/L05/OldSchool"
{Properties{_MainCol ("颜色", color) = (1.0, 1.0, 1.0, 1.0)_SpecularPow ("高光次幂", range(1, 90)) = 30}SubShader{Tags { "RenderType"="Opaque" }Pass{Name "FORWARD"Tags { "LightMode"="ForwardBase" }CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0// 输入参数// 修饰字(满足小朋友太多的问好, 想保发量的大家看热闹)// uniform 共享于vert,frag// attibute 仅用于vert// varying 用于vert,frag传数据uniform float3 _MainCol; // RGB够了 float3uniform float _SpecularPow; // 标量 float// 输入结构struct VertexInput{float4 vertex : POSITION; // 顶点信息 Get✔float4 normal : NORMAL; // 法线信息 Get✔};// 输出结构struct VertexOutput{float4 posCS : SV_POSITION; // 裁剪空间(暂理解为屏幕空间吧)顶点位置float4 posWS : TEXCOORD0; // 世界空间顶点位置float3 nDirWS : TEXCOORD1; // 世界空间法线方向};// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert (VertexInput v){VertexOutput o = (VertexOutput)0; // 新建输出结构o.posCS = UnityObjectToClipPos( v.vertex ); // 变换顶点位置 OS>CSo.posWS = mul(unity_ObjectToWorld, v.vertex); // 变换顶点位置 OS>WSo.nDirWS = UnityObjectToWorldNormal(v.normal); // 变换法线方向 OS>WSreturn o; // 返回输出结构}// 输出结构>>>像素float4 frag(VertexOutput i) : COLOR{// 准备向量float3 nDir = normalize(i.nDirWS);float3 lDir = _WorldSpaceLightPos0.xyz;float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 hDir = normalize(vDir + lDir);// 准备点积结果float ndotl = dot(nDir, lDir);float ndoth = dot(nDir, hDir);// 光照模型float lambert = max(0.0, ndotl);float blinnPhong = pow(max(0.0, ndoth), _SpecularPow);float3 finalRGB = _MainCol * lambert + blinnPhong;// 返回结果return float4(finalRGB, 1.0);}ENDCG}}FallBack "Diffuse"
}
庄懂着色器_L05_镜面反射相关推荐
- 庄懂着色器_L21_CyberPunk
庄懂-BoyanTata的个人空间_哔哩哔哩_Bilibili 案例_赛博小人 模型准备 平常所说的1U,2U对应Unity的是0U,1U 3Dsmax的顺序是从1开始的;Unity_UV的顺序是从0 ...
- 庄懂着色器_L09_Fresnel/Matcap/Cubemap
庄懂-BoyanTata的个人空间_哔哩哔哩_Bilibili 环境反射的做法有Matcap和Cubemap 菲涅尔现象 菲涅尔连连看部分 Fresnel = pow(1-ndotv,powVal)下 ...
- 庄懂着色器_L18_序列帧与极坐标
庄懂-BoyanTata的个人空间_哔哩哔哩_Bilibili 序列帧_Sequence 小人是一个AB的模型,外面鬼火是AD模式,是一个双Pass的Shader 代码部分 Pass可以都是有一个名字 ...
- 《Unity着色器和屏幕特效开发秘笈》—— 第3章 利用镜面反射让游戏闪耀起来...
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 庄懂的技术美术入门课(美术向)——01~02学习笔记
目录 Lecture 01 1) 工程搭建示范 a) 准备工作 b) 创建Shader 2) 理论介绍 a) 结构(Struct) b) 简单的渲染管线 c) 模型->输入结构 d) 输入结构- ...
- 个人学习笔记——庄懂的技术美术入门课(美术向)01
个人学习笔记--庄懂的技术美术入门课(美术向)01 0 前言 1 工程搭建示范 2 理论 2.1 结构(struct) 2.2 渲染管线 3 操作 3.1-2 向量/标量/点积等若干线代基础 3.3 ...
- 庄懂的技术美术入门课(美术向) Lesson1
庄懂的技术美术入门课(美术向) Lesson1 一.关于结构和渲染管 1.1 结构 1.2 渲染管线 模型到输入结构的过程是选取.采集模型文件中的信息,可以提供给后续渲染用的相关信息 顶点Shader ...
- 个人学习笔记——庄懂的技术美术入门课(美术向)03
个人学习笔记--庄懂的技术美术入门课(美术向)03 1 回顾渲染流程 2 尝试shader代码 3 Lambert试试 4 节点组 5 作业 1 回顾渲染流程 老师以美术绘画的角度理解渲染管线,比较形 ...
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 amp; 纹理混合...
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星 ...
最新文章
- Tslib移植与分析【转】
- 谈博客的赢(盈)利模式
- [luoguP1168]中位数(主席树+离散化)
- \00在python中
- html5本地缓存如何提交,HTML5: 本地缓存
- vscode 书签_10个我必备的 VS code 拓展
- codeforces 41A-C语言解题报告
- 2021年广西艺术高考成绩查询,2021年广西美术高考成绩查询网址:https://www.gxeea.cn/...
- 建筑电气工程设计常用图形和文字符号_想要识图无忧?电气工程图图形符号全能图解,电工最爱识图助手...
- java 监听request_ServletRequest 监听器
- 第一阶段冲刺 第三天
- UVA 208 划水记录2
- maven 项目 spring mvc + jdbc 配置文件
- js分页工具分页功能实现
- Intellij里面的几个异常处理方案
- 结婚吉日怎样挑选?好好把握幸福启程
- Codeforces Round #644 1360H. Binary Median(思维、构造)
- 测开高阶技术- Docker/环境布置/容器 讲清楚了,全套教程
- 【USB】USB video class (UVC)相关概念学习
- 进销存系统中的多计量单位