摘要:
这道题出自LeetCode,题目如下: 给你一个整数数组 nums ,该数组具有以下属性: nums.length == 2 * n. nums 包含 n + 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1: 输入:nums = [1,2, 阅读全文
摘要:
这道题出自LeetCode,题目如下: 给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。 年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, 阅读全文
摘要:
SSAO是常用的实现环境光遮蔽,提高物体真实性的一种技术,它可以分为生成AO贴图和使用AO贴图两个阶段。在生成阶段,我们需要一张view space下的normal texture,和一张depth texture作为输入。depth texture是已有的,这里意味着需要新增normal text 阅读全文
摘要:
这道题出自LeetCode,题目如下: 给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1: **输入:**n = 阅读全文
摘要:
使用light map,可以将静态光源的信息(颜色,阴影,方向等)存储到texture上,渲染静态的物体时,无需进行多个light pass,直接从texture中进行采样计算即可。使用light map可以用较低的成本实现间接光照和全局光照。在Unity中开启light map,首先将需要的光源m 阅读全文
摘要:
shadow map是常见的实现阴影效果的手段,可以分为生成shadow map和采样shadow map两个阶段。生成shadow map首先需要准备好资源,和绑定的view: D3D12_RESOURCE_DESC texDesc; ZeroMemory(&texDesc, sizeof(D3D 阅读全文
摘要:
这道题出自LeetCode,题目如下: 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0。 将第 i 个筹码向左或者右移动 1 个单位,代价为 1。 最开 阅读全文
摘要:
之前在《Unity的Deferred Shading》[1]这篇文章中已经把延迟渲染中用到的默认计算光照的shader过了一遍,时隔一段时间再看,又有一些查漏补缺之处,放在这里记录一下。 两个pass Internal-DeferredShading中其实包含了两个pass。第二个pass只会在ca 阅读全文
摘要:
normal map本身就是一张texture,故而加载normal map的逻辑并不需要进行特殊处理。加入normal map之后,shader层面需要顶点的tangent信息,因此需要在CPU层将tangent信息传递进去。首先需要修改的是顶点的声明: struct Vertex { XMFLO 阅读全文
摘要:
Unity原生是支持雾效的,可以通过Window/Rendering/Lighting Settings设置: Unity支持3种模式的雾效,Linear,Exponential,Exponential Squared。 Linear模式对应的雾效系数公式如下: \[ f = \dfrac{E - 阅读全文