Vulkan Cascade Shadow Map的故事 Vulkan-AirEngine内实现的的CSM与CascadeEVSM,在Forward+渲染器中增加3*3PCF的CSM实现,在阴影可视化渲染器中另增加Cascade-EVSM实现
关于在寒假用两周从零手写包含模拟着色器的软渲染器这件事 当你重新踏上旅途之后,一定要记得旅途本身的意义。——巴巴托斯轮子哥说过,编译原理,操作系统,图形学是程序员的三大浪漫,既然以后想从事游戏方面的工作,造这个轮子是不可避免的。其实早在本科的时候我就有写个软渲染器的想法,不过已是大三,变得佛系了起来,最终也没有实现。不过今年自我感觉状态良好,哈哈哈哈,应该有能力完成这个轮子了。先贴上代码链接:GitHub - FREEstriker/AirRendererhttps://github.com/FREEstriker/AirRenderer因.
在URP中正确写入Sprite深度以使用DOF 我准备在文字冒险中加入景深的效果,但是因为unity内置shader的缘故,sprite是不会写入深度的,而如果要使用PostProcessing的DOF效果的话,是必须要将半透明物体的深度正确写入Depth Buffer的,这篇消耗了我大量精力的文章就是要介绍正确写入的方法。其实,如果只是要在2D游戏中实现类似于景深的效果,不写入深度其实也是可以的,我找到的有两种方案:一种是实时对Sprite进行模糊计算;二是直接使用离线预模糊的图片,根据强度进行混合。离线预模糊虽然这两种方法都可以比较简
URP中实现的Custom2D光照系统的代码分析 虽然urp中是自带2D光照系统的,但是并不能和前向渲染同时使用,只能使用2D工作流了,所以在网上研究了一下怎样实现一个unity内的2D光照系统。代码是来源于https://github.com/SardineFish/Unity2DLightinggithub.com/SardineFish/Unity2DLighting这个项目是由一位知乎er写的,也有对应的文章SardineFish:Unity中实现2D光照系统244 赞同 · 17 评论文章正在上传…重新上传取消阴影产生的.
操作系统考研复习指导-某分页式虚拟存储系统,用于页面交换的磁盘的平均访问及传输时间是20ms-王道 某分页式虚拟存储系统,用于页面交换的磁盘的平均访问及传输时间是20ms。页表保存在主存,访问时间为1μs,即每引用一次指令或数据,需要访问两次内存。为改善性能,可以增设一个关联寄存器,如果页表项在关联寄存器里,则只要访问一次内存就可以。假设80%的访问其页表项在关联寄存器中,剩下的20%中,10%的访问(即总数的2%)会产生缺页。请计算有效访问时间。今天又看到了这道题,有人在考研群里问,我又仔细想了一下,感觉答案应该是23。主要的问题集中在是20+2还是20+3。显然,访问页表需要1,最后实际读
MiniPascal编译器-西工大编译原理实验 连续搞了三天的编译原理实验,从最开始啥都不会,到现在熟练地加文法、改bug,也算是小有心得,分享一下我实现的这个相比要求的多了几个功能,比如:消除注释、FOR循环、多维数组、自动类型转换、类型检查、数组维数检查、还有一些错误提示之类的,画抽象语法树使用graphaz来画。有几个关键点需要说一下:环境环境我用的codeblocks,网上下了个flex和bison的包,首先肯定是添加这两个的path路径,之后随便打开一个cmd,敲一个win_bison --help就会有下面这样的,当然具体时间
30天自制操作系统-DAY2 1.fat12格式代码后的re后的resb 18 根据fat12的格式,完全不需要这一句,可以注释掉2.org 7c00 在网上找了一篇讲的很好的http://www.ruanyifeng.com/blog/2015/09/0x7c00.html 是为了兼容8086后的机器,org是设定默认偏移量...
30天自制操作系统笔记-DAY1 操作系统课上的level3决定做这个了,下午马原大概看了一下第一章,是关于扇区启动的,晚上试了一下,遇到几个问题,总结一下。1.现在没有软盘了 使用了u盘作为启动器,使用usbbit或win32diskManager来将img装载到u盘上,现在u盘变为1.35m,模拟为了fat12的软盘2.开机无法引导,usb启动后依然引导了win10 bios里的引导模式是uefi,...
Unity3D-利用Playable和Timeline实现对话框 因为自己想做一个甜品级的galgame,上学期曾经用java写过一个json的对话流程配置工具,但是gui实在是太难写了,而且写出来的对话树有bug,所以也就作罢了。偶然看到unity的timeline工具,感觉可以使用它做出效率比较高的对啊流程配置,并且不只是对话,连人物的动画,音乐等都可以很好的显示出来。这几天了解了一下timeline中的playablebehaviour和playa...
LeetCode-整数反转-ReverseInteger 看起来很简单的样子,难点是判断是否溢出。但是c#丽是直接利用int.TryParse()来判断,所以直接把数字转为字符串,进行反转,在判断即可。public int Reverse(int x) { string s1 = x.ToString(); string s2 = null; if(x &l...
LeetCode-Z字形变换-ZigZagConversion 这道题看着很简单,只要把原串分到几个行中,在拼接起来就可以了,相当于把字符串分到容器中。 public string Convert(string s, int numRows) { if(s.Length == 0 || numRows == 1)//直接返回 { return...
LeetCode-最长回文子串-LongestPalindromicSubstring 回文字串的问题,学算法的时候曾经见过,使用动态规划就可以解决,初始化单个和双字符就可以,之后通过判断新串两端的字符是否相等和内部是否为回文串就可以判断新串是否为回文串。public string LongestPalindrome(string s) { if(s.Length == 0) { ...
LeetCode-寻找两个有序数组的中位数-MedianOfTwoSortedArrays 比较简单的一道寻找中位数的题,只要不断取两个队列中头较小的一个,直到取到计算中位数所需的一位或两位即可。public double FindMedianSortedArrays(int[] nums1, int[] nums2) { int len = nums1.Length + nums2.Length; int mid...
LeetCode-无重复字符的最长子串-LongestSubstringWithoutRepeatingCharacters 首先想到的是固定一位,再从这一位向前寻找相同的字符计算长度,再找出最大长度。但是可以使用滑动窗口法来解决,窗口不断向右延长,遇到重复的字符则左边缩短,在字典里记录每个字符的下个位置即可实现左边界的缩短。 public int LengthOfLongestSubstring(string s) { int len = s.Leng...
LeetCode-两数相加-AddTwoNumbers 一道很普通的链表题,只要注意长短不同和进位的问题就可以了,遍历一遍就可以得出结果。 public ListNode AddTwoNumbers(ListNode l1, ListNode l2) { ListNode prevListNode = null;//初始化参数 int sum = 0; ...