UnityShader-复杂光照 UnityShader-复杂光照渲染路径(Rendering Path)渲染路径决定了光照如何应用到UnityShader中,Unity包含3中渲染路径: 前向渲染路径(Forward Rendering Path) 延迟渲染路径(Deffered Rendering Path) 顶点照明路径(Vertex Lit Rendering Path) 大多数情况下,一个项目只使用一种渲染路径,如果 2021-07-22 Unity #Unity #Shader #Lighting
UnityShader-透明效果 UnityShader-透明效果Unity中通常使用2种方法来实现透明效果:透明度测试(Alpha Test)和透明度混合(Alpha Blending) 渲染队列(Render Queue)Unity使用渲染队列来解决渲染顺序的问题,可以使用SubShader的Queue标签来决定将模型归到哪个渲染队列 透明度测试只要一个片元的透明度不满足条件(通常是小于某个阈值),那么它对应的片元就会被舍弃 2021-07-17 Unity #Unity #Shader #Lighting
UnityShader-基础纹理 UnityShader-基础纹理纹理映射(texture mapping):使用一张图片来控制模型外观 纹理映射坐标(texture-mapping):定义了该顶点在纹理中对应的2D坐标,通常使用二维变量(u, v)表示,也被称为UV坐标,范围被归一化到[0, 1] 纹理采样时使用的纹理坐标不一定在[0, 1]范围内,会根据平铺模式决定如何采样 在Unity中,纹理空间符合OpenGL传统,原点位 2021-07-15 Unity #Unity #Shader #Texture
UnityShader-基础光照 UnityShader-基础光照从宏观上说,渲染包含了两大部分:决定一个像素的可见性,决定这个像素上的光照计算 标准光照模型环境光用来模拟间接光照,指光线会在多个物体之间反射,最后进入摄像机。计算方法如下:$$c_{ambient} = g_{ambient}$$ 在Unity中,场景中的环境光通过Window->Render->Lighting中设置,在Shader中通过内 2021-07-13 Unity #Unity #Shader #Lighting
UnityShader-ShaderLab UnityShader-ShaderLab 本文用于放置一些ShaderLab中的基本概念和属性速查表 Unity Shader的基本框架12345678910111213141516Shader "MyShader" { Properties { _MyTexture ("My Texture", 2D) = &q 2021-07-12 Unity #Unity #Shader
UnityShader-渲染流水线 UnityShader-渲染流水线渲染流程计算机从一系列顶点数据(POSITION)、纹理(TEXCOORD)等信息出发,把这些信息最终转换成一张二维图像显示在屏幕上。 渲染流程可分为3个阶段:应用阶段(Application Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage) 应用阶段通常由CPU负责实现,这一阶段的主要任务: 准备好场景数 2021-07-10 Unity #Unity #Shader
Game Dev Log Game Dev Log2021-4-23关键词:物理引擎,碰撞 y轴抖动问题现场还原:当Player落在cube平面上时,会出现y轴方向的速度不断波动的问题可能原因:cube的厚度过小(0.2),两个物体的碰撞判断造成解决方法:增加cube的厚度 物体碰撞产生速度分量现场还原:当Player在方块的边缘下落时,它会产生一个水平方向的速度分量,并且会一直运动下去可能原因:Player在碰撞到方 2021-04-23 #Unity #Dev Log
棋盘覆盖问题 棋盘覆盖问题问题描述有一个边长为2的n次方的正方形棋盘,其中一个位置被图上了颜色,如图: 现在要使用角形的图案来填满这块棋盘,请问填法是什么? 示例: 主要思想因为棋盘的边长是2的幂次,所以对半分块是很容易的,在把棋盘分成四块后,其中有一块一定被上过色,那么这时只需要放置一个角形图案到剩余的三块中间,那么这四块有可以分别视为涂过色的新棋盘,当棋盘的边长只剩2时,可以直接放置角形图案充满棋盘。因 2020-10-27 数据结构与算法 #Java #分治
快速排序 快速排序快速排序,顾名思义,是消耗时间较少的排序算法。其基本思想也是基于自顶向下,分而治之。 对于升序排序,首先选取一个元素,将其放到特定的位置,使这个元素左边的值都比它小,右边的值都比它大。然后问题就被化解成对左边的数组进行排序和右边的数组进行排序,直到数组元素只剩一个时,直接返回最小解。 使用递归算法的代码如下: 123456789101112131415161718192021public 2020-10-27 数据结构与算法 #Java #分治 #排序
大整数乘法 大整数乘法对于位数不超过10位的整数而言,可以直接使用运算符做乘法,但是遇到更大的整数只能使用数组来模拟运算。 这里总结了二进制表示的大整数的乘法。 假设u和v是两个二进制大整数,如果直接相乘,需要$O(n^2)$的时间复杂度,当然思路也是十分清晰的,直接把每一位相乘得到的数字加起来就好。 也可以使用分治的思想来实现乘法,并且如果能够使用移位指令的话,时间复杂度能够降低到$O(n^{1.59})$ 2020-10-27 数据结构与算法 #高精度 #Java #分治