自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 (渲染)软光栅渲染器与UE光照系统

先光源空间分tile和每个mesh的bound求交,存tilelist,然后每个像素在trace的时候变换到光源空间,从tilelist里取可能相交的meshsdf贴图,然后对这些贴图进行march。是特别软、特别大范围的效果,相比烘GI,DFAO的好处是动态可以有物体级别的移动,只是不支持顶点动画,很适合堡垒之夜这种需要经常拆房子的游戏。暴力建场的方法,就是直接迭代32*32*32个点,然后在每个点上向周围发射一大堆光线,然后保存交到的最小距离,作为距离场在这个点上的值。...

2022-07-21 11:19:32 1101 1

原创 【python】手写光线追踪教程

本文未经允许禁止转载B站:https://space.bilibili.com/455965619作者:Heskey0path tracer based on 《PBRT》一.introduction to sampling theory1. what is sampling?impulse train:sampling process corresponds to multiplying the function by a “impulse train” function, an

2021-11-16 17:38:39 3428

原创 python手写光线追踪(不使用图形学API)——第三期

本文未经允许禁止转载B站:https://space.bilibili.com/455965619作者:Heskey0 / 赫斯基皇三.lambertian材质的半球采样因为lambertian材质涉及到的知识比较多,所以单独用一章进行讲解在本章中,我会讲解漫反射的一部分知识:1.cosine hemisphere sampling2.计算lambertian材质的漫反射法线方向和pdf我们要实现对球面的uniform sampling,可以先在圆盘中采样在一个正方形中采样将点转换到

2021-07-23 00:47:58 976 2

原创 python手写光线追踪(不使用图形学API)——第二期

本文未经允许禁止转载B站:https://space.bilibili.com/455965619作者:Heskey0 / 赫斯基皇二.specular材质和glass材质在这个案例中,总共有4种材质nonespecularglasslambertian注意:由于每种材质的复杂度不同,我会分开介绍这些材质中如何实现能量守恒1.specular材质对于specular材质,我们 不考虑折射,只考虑反射(1) 我们首先对出射光的方向进行采样def reflect(d, n):

2021-07-22 00:56:47 564 2

原创 python手写光线追踪(不使用图形学API)——第一期

本文未经允许禁止转载B站:https://space.bilibili.com/455965619作者:Heskey0 / 赫斯基皇一.布置场景场景中总共有9个物体6个 plane1个 box1个 sphere1个 light我将在此章节介绍这些物体相关的计算注意:我们首先计算光线命中这些物体的点和光源到命中点的距离1.plane要表示一个plane,可以通过 点法式,所以我们总共需要两个数据position : plane的位置normal : plane的法向量(1

2021-07-21 23:25:13 864 1

原创 C#深入理解闭包问题

首先认识一下什么是闭包:内层函数引用外层函数的变量的最终值(产生的原因就是作用域)注:一个大括号就是一个作用域先来看一段代码:Action b = null;for (int i = 0; i < 5; i++){//作用域一 b += () => {//作用域二 Console.WriteLine(i); };}b();输出结果55555分析:作用域一就是外层函数,作用域二是内层函数①在作用域一中,i只被声明了1次②i的最终值是5③作用域二中引用

2021-01-08 15:01:25 353 1

原创 C#实现定时任务

/// <summary> /// 定时任务(计时器)管理类 /// </summary> public class TimeManager { private static TimeManager instance = null; public static TimeManager Instance { get { ...

2020-12-08 19:46:16 2345 1

原创 粘包拆包问题 封装成一个有规定的数据包

/// <summary> /// 关于编码的工具类 /// </summary> public static class EncodeTool { //粘包拆包问题 封装成一个有规定的数据包 /// <summary> /// 构造消息体,包头/包尾 /// </summary> /// <param name="data">&...

2020-12-08 19:39:51 113

原创 线程安全的int类型

/// <summary> /// 线程安全的int类型 /// </summary> public class ConcurrentInt { private int value; public ConcurrentInt(int value) { this.value = value; } /// <summary> ...

2020-12-08 19:32:42 1647

原创 【Unity】提高开发效率——泛型单例

【Unity】提高开发效率——泛型单例在创建一个Unity工程的时候,第一步应该是搭建部分框架,准备好一些工具代码。1.泛型单例:在Unity中,只要是继承自MonoBehaviour的类都是不支持多线程的,但并不意味着我们可以随意使用单例,因为我们使用泛型单例的目的主要是方便Manager类的复用,而这些类往往不需要去继承MonoBehaviour,这种情况下如果不加锁的话可能会造成new出来两个对象。带有static的单例看需使用,如果确定一定会用到,那么就可以选择静态常量或者静态代码块式的单例。

2020-12-08 19:29:55 1280

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除