栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity Shader实时阴影计算

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity Shader实时阴影计算

一些必需的声明
  1. 需要声明LightMode
  2. 定义宏#pragma multi_compile_fwdbase
  3. 包含库函数"AutoLight.cginc"
  4. 需要ShadowCaster,写Fallback "Diffuse"可以自动补全
  5. 阴影一般作用于漫反射 (直接漫反射和简介漫反射)
  6. half diff_term = min(shadow,max(0.0,dot(normal_dir, light_dir)));
    half3 diffuse_color = diff_term *  _LightColor0.xyz * base_color.xyz;

踩坑点
struct v2f
{
 float4 pos : SV_POSITION;               //必须写成pos,不然会报错
 SHADOW_COORDS(2) 
};

v2f结构体的顶点坐标需要写成pos,写成vertex或者其他名字会报错

只计算阴影(DirectLight)

Tags{"LightMode"="Forwardbase"}
#pragma multi_compile_fwdbase
#include "AutoLight.cginc"

// in v2f struct;
SHADOW_COORDS(2) 
// in vert sahder
TRANSFER_SHADOW(o); 
//in frag shader;
half shadow = SHADOW_ATTENUATION(i);
Fallback "Diffuse"

 计算阴影和灯光衰减(pointLight)

Tags{"LightMode"="Forwardbase"}
#pragma multi_compile_fwdbase
#include "AutoLight.cginc"

// in v2f struct;
LIGHTING_COORDS(3,4) 
// in vert sahder
TRANSFER_VERTEX_TO_FRAGMENT(o); 
//in frag shader;
half atten = LIGHT_ATTENUATION(i); //
Fallback "Diffuse"

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号