先得到象素到光源的向量, 与光源方向, 求夹角, 然后在平滑的插值作为强度了返回,
CG代码如下:
float InSpot(float3 LightPos,
float3 LightVec,
float3 PixelPos)
{
float3 vec1 = normalize(PixelPos - LightPos);
float cosangle = dot(LightVec, vec1);
return smoothstep(0.707f, 1.0f, cosangle);
}
使用时,这样处理
color.xyz = (emissive + ambient + diffuse + specular)*InSpot(lightPosition, lightVec, P);
color.w = 1;
相关文章
- 【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)
- python处理era5_python环境下实现ERA5逐小时数据的自动下载和简单处理
- java 的对象拷贝(有深浅拷贝两种方式,深拷贝实现的两种方式(逐层实现cloneable接口,序列化的方式来实现))
- Light libraries是一组通用的C基础库,目标是为减少重复造*而写(全部用POSIX C实现)
- DDL 毫秒级同步,Light Schema Change 的设计与实现|新版本揭秘
- Android编程之简单逐帧动画Frame的实现方法
- Python实现爬取逐浪小说的方法
- Android简单逐帧动画Frame的实现
- Android简单逐帧动画Frame的实现
- Android逐帧动画、属性动画的简单实现