当前位置:网站首页>半兰伯特光照模型
半兰伯特光照模型
2022-08-09 00:08:00 【ThomasQxx】
Shader "QStudyShader/Per_Fragment_HalfLambertLaw"
{
Properties{
}
SubShader{
Pass{
Tags{
"LightModel" = "ForwardBase"}
CGPROGRAM
#include "Lighting.cginc"
#pragma vertex Vertex
#pragma fragment Fragment
struct a2v {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f {
float4 pos : SV_POSITION;
float3 worldNormal : TEXCOORD0;
};
v2f Vertex(a2v v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
return o;
}
fixed4 Fragment(v2f i) : SV_TARGET{
//世界空间下的法线方向
fixed3 worldNormal = normalize(i.worldNormal);
//世界空间下的光照方向
fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz);
//环境光
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
//半兰伯特光照公式
fixed halfLambert = dot(worldNormal, worldLightDir) * 0.5 + 0.5;
//漫反射强度
fixed3 diffuse = _LightColor0.xyz * halfLambert;
return fixed4(diffuse + ambient, 1.0);
}
ENDCG
}
}
}
边栏推荐
- Flutter -自定义日历组件
- MySQL预处理及过程与对象创建数据库
- 记一次“粗暴”的Flash模拟EEPROM法(用的STM32F030C6芯片,没找到模拟EEPROM库函数)
- 穿越派·派盘V3.14发版啦!
- 如何使用加密套件?
- MySQL导入导出数据库
- Error executing sql file from Mysql Workbench: Error executing task: 'ascii' codec can't decode byte 0xd0 in position 26:
- 如何解决在使用keepAlive后使用grid+echart的页面高度异常的问题
- 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)
- flutter Future的正确用法
猜你喜欢
随机推荐
第四章 SQL与关系数据库基本操作(下)
JS基础-数组
Jupyter代码补全、修改路径、增添解释器
如何使用加密套件?
Idea碰到的问题总结
Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [33,755] milliseco
C#编写飞行棋游戏
蓝桥杯历届试题-高僧斗法(博弈论)
Mysql Workbench导出sql文件出错:Error executing task: ‘ascii‘ codec can‘t decode byte 0xd0 in position 26:
C--《C和指针》第8章读书笔记之多维数组
第五章 数据库编程
杭电多校8 补题
穿越派·派盘 + 静读天下 = 顶级电子书阅读器
2017年11月历史文章汇总
Several ways to implement inheritance in js
对纹理进行uv坐标偏移
一 C#中通过USB操作手机文件
蓝桥杯历届试题-合根植物(并查集)
IDEA常用插件及代快捷键模板整理
如何使用电脑云盘?