<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[overwhelming_kda的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/overwhelming_kda</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; overwhelming_kda]]></copyright><item><title><![CDATA[流体模拟引擎splishsplash 数学方法]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/128874053</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/128874053</guid><author>overwhelming_kda</author><pubDate>Sun, 05 Feb 2023 02:05:43 +0800</pubDate><description><![CDATA[流体模拟的研究学习博客中，我先阐述流体模拟的数学方法，再阐述流体模拟引擎splishsplash的架构和实现，使用方法。物理仿真是视觉计算中的一个重要研究课题。它具有许多应用，包括虚拟原型，培训模拟器，机器人，用于数字制作的动画软件，包括电影和动画电影中的视觉效果以及计算机游戏。我希望这些示例及其文档能帮助您了解仿真方法。随意在您自己的课题中使用这些示例。]]></description><category></category></item><item><title><![CDATA[c#编程基础：装箱与拆箱]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/128064281</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/128064281</guid><author>overwhelming_kda</author><pubDate>Sun, 27 Nov 2022 15:05:56 +0800</pubDate><description><![CDATA[装箱：值类型转换为引用类型拆箱：引用类型转换为值类型引用类型：任何称为“类”的类型都是引用类型，使用class修饰值类型：所有值类型都称为结构或枚举，使用struct或enum修饰c#中的List()和动态数组ArrayList()有以下区别：1.List()是指定数据类型，较为安全 如List和List,当数据类型不对时会报错，限制数据类型确保了数据安全。而ArrayList()在使用Add()方法存储值类型时要将值类型转换为引用类型且同时可以存储引用类型，如string，是不安全的。]]></description><category></category></item><item><title><![CDATA[图形学数学-判断向量与点的方位]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126476097</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126476097</guid><author>overwhelming_kda</author><pubDate>Tue, 23 Aug 2022 12:13:24 +0800</pubDate><description><![CDATA[通过向量判断点的三维位置、判断另一向量的方位]]></description><category></category></item><item><title><![CDATA[shader学习摘要（九）unity阴影]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126428963</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126428963</guid><author>overwhelming_kda</author><pubDate>Sun, 21 Aug 2022 17:32:35 +0800</pubDate><description><![CDATA[在前向渲染中，如果场景中最重要的平行光开启了阴影，unity就会为该光源计算它的阴影映射纹理（shadowmap）。这张阴影映射纹理本质上也是一张深度图，它记录了从该光源的位置出发、能看到的场景中距离它最近的表面位置（深度信息）。如果我们想要一个物体接收来自其他物体的阴影，就必须在shader中对阴影映射纹理（包括屏幕空间的阴影图）进行采样，把采样结果和最后的光照结果相乘来产生阴影效果。]]></description><category></category></item><item><title><![CDATA[shader学习摘要（八）unity光源类型]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126352296</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126352296</guid><author>overwhelming_kda</author><pubDate>Fri, 19 Aug 2022 16:56:02 +0800</pubDate><description><![CDATA[1.平行光
2.点光源
3.聚光灯
在前向渲染中我们在unity shader中访问它们的5个属性：位置、方向、颜色、强度以及衰减。#pragma multi_compile_fwdbase
此声明可以让我们在使用光照衰减的变量中正确被赋值
效果
左边设置有2个点光源与1个平行光源，右边为效果
左边设置有4个点光源与1个平行光源，右边为效果
我们除了可以用纹理采样来减少计算衰减的复杂度（类似哈希表的原理），但是我们可以在代码中使用公式来计算光源的衰减：例如，下面的代码可以计算光源的线性衰减：
float d]]></description><category></category></item><item><title><![CDATA[shader学习摘要（七）——unity的渲染路径]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126347309</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126347309</guid><author>overwhelming_kda</author><pubDate>Mon, 15 Aug 2022 18:16:50 +0800</pubDate><description><![CDATA[unity的渲染路径实际上共有两种：前向渲染路径和延迟渲染路径。]]></description><category></category></item><item><title><![CDATA[shader 学习摘要（六）透明度混合]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126189918</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126189918</guid><author>overwhelming_kda</author><pubDate>Tue, 09 Aug 2022 11:06:46 +0800</pubDate><description><![CDATA[透明度混合要先关闭深度写入，原理见流程图:GPU渲染流程：深度测试流程：透明度混合流程：需要进行透明度混合的片元必须通过透明度测试，但不想立即将颜色写入深度缓冲区，如果透明度混合时将遮挡区域的深度写入了缓冲区，那么更新颜色缓冲区时这部分颜色不会发生改变，会出现视觉上的“错误”。如果没有打开深度写入，那么所有片元的深度是相同的，进行混合时不会发生视觉“错误”。...]]></description><category></category></item><item><title><![CDATA[【KaJiYa改进】Shader头发效果]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126223773</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/126223773</guid><author>overwhelming_kda</author><pubDate>Mon, 08 Aug 2022 11:07:27 +0800</pubDate><description><![CDATA[头发各项异性高光：该shader需使用三张texture进行合成，可以像KaJiYa调节光照环，另外也可以调节Tilling影响发丝，立方体纹理影响整体效果。]]></description><category></category></item><item><title><![CDATA[shader学习摘要（五）透明度测试]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125999614</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125999614</guid><author>overwhelming_kda</author><pubDate>Sat, 06 Aug 2022 09:46:19 +0800</pubDate><description><![CDATA[我们在unity中的渲染顺序是视野方向从后往前渲染，如果采取从前往后渲染，前方遮挡物如果为不透明物体，则视野中会出现不透明物体在透明物体前面的假象，如果物体为半透明物体，则会出现渲染颜色的混合结果完全反过来，同样会出现后方物体在前方的假象。透明度测试在AlphaTest队列内渲染即在所有不透明物体渲染之后进行统一渲染以更高效。我们在代码中的Tags标签中我们需要把Queue标签设置为AlphaTest。在unity中，索引号越小的越先渲染，括号内为数值。......]]></description><category></category></item><item><title><![CDATA[技术美术百人计划：1.2.3 MVP矩阵运算 笔记与作业]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125339184</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125339184</guid><author>overwhelming_kda</author><pubDate>Sun, 10 Jul 2022 00:30:05 +0800</pubDate><description><![CDATA[谢谢冯乐乐老师的shader入门精要，霜狼大佬的无私奉献。MVP矩阵分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space)，在这里它称为局部坐标(Local Coordinate)，它在之后会变为世界坐标(World Coordinate)，观察坐标(View Coordinate)，裁剪坐标(Clip Coordinate)，并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个]]></description><category></category></item><item><title><![CDATA[shader学习摘要（四）——凹凸映射（法线纹理）]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125690265</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125690265</guid><author>overwhelming_kda</author><pubDate>Sat, 09 Jul 2022 22:59:40 +0800</pubDate><description><![CDATA[在了解法线纹理前，我们先要了解高度纹理，也就是通过改变物体表面高度，高度纹理存储的（intensity）来表示模型表面的局部海拔高度法线纹理中存储表面法线的方向，法线分量范围在[-1,1],像素分量在[0,1],那么通常像素映射：

法线映射：

法线纹理制作中使用的空间坐标系：
1.顶点的切线空间，z轴是法线，x轴是切线，y轴是法线与切线的叉积（副切线）
2.模型本身的模型空间模型空间：
1.实现简单，更加直观
2.边界平滑
切线空间：
1.自由度高。
2.可进行uv动画。
3.可重用。
4.可压缩。法线]]></description><category></category></item><item><title><![CDATA[Unity shader烟雾效果与saturate函数用法]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125694674</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125694674</guid><author>overwhelming_kda</author><pubDate>Sat, 09 Jul 2022 16:01:47 +0800</pubDate><description><![CDATA[烟雾纹理效果，学习一下
主要学习函数saturate归化数据为[0,1]范围]]></description><category></category></item><item><title><![CDATA[shader学习摘要（四）——单张纹理]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125618251</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125618251</guid><author>overwhelming_kda</author><pubDate>Tue, 05 Jul 2022 14:33:21 +0800</pubDate><description><![CDATA[我们通常会使用一张纹理来代替物体的漫反射颜色。在本节中，我们将学习如何在unity shader中使用单张纹理来作为模拟的颜色单张纹理的使用方是在前面的光照模型的基础（这里使用的是Blinn-Phong光照模型）上，将模型原本的颜色乘以纹理的颜色的方法进行的纹理映射代码如下（示例）：
使用效果

如图所示，这里使用的texture type是默认（Default），这是因为经过版本的更新，将texture纹理命名为了Default，实际上，unity默认使用的纹理都是单张纹理
Wrap Mode属性中rep]]></description><category></category></item><item><title><![CDATA[shader基础学习摘要（三）高光反射]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125361824</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125361824</guid><author>overwhelming_kda</author><pubDate>Sun, 19 Jun 2022 23:53:14 +0800</pubDate><description><![CDATA[在6.2.4节中，我们给出了基本光照模型中高光反射部分的计算公式
高光反射求的夹角是模型反射光线与视线的夹角，因为视线光线距离反射光线越近，光照强度越高，与漫反射不同，漫反射是求法线与光源方向的夹角，与视野方向无关，所以即使移动镜头摄像机也不会影响表面光照，而高光反射则与视野方向紧密相关，高光反射时摄像机并不能完全收反射光，只能看到部分光照反射，数值与材质光泽度有关...]]></description><category></category></item><item><title><![CDATA[shader基础学习摘要（二） 兰伯特光照模型]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125351166</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125351166</guid><author>overwhelming_kda</author><pubDate>Sat, 18 Jun 2022 21:38:44 +0800</pubDate><description><![CDATA[该节介绍了兰伯特光照模型的三种算法，并进行了对比，引用自shader入门精要]]></description><category></category></item><item><title><![CDATA[shader基础学习摘要（一）]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125304752</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/125304752</guid><author>overwhelming_kda</author><pubDate>Thu, 16 Jun 2022 00:38:35 +0800</pubDate><description><![CDATA[我通过冯乐乐老师的书籍，为该代码进行了进一步的解释和理解，以作为学习的摘要和后续改进shader的参考。]]></description><category></category></item><item><title><![CDATA[图形学：Opengl圆和多边形的绘制]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123514798</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123514798</guid><author>overwhelming_kda</author><pubDate>Tue, 15 Mar 2022 23:05:41 +0800</pubDate><description><![CDATA[1、采用中点Bresenham算法实现带颜色的圆绘制，同时采用OpenGL库函数实现带颜色的圆的绘制。
2、采用X-扫描线算法/改进的x-扫描线算法/边缘填充算法/教材或文献中其他算法实现六边形绘制，同时采用OpenGL库函数实现带颜色的六边形绘制。

// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "stdio.h"
#include &lt;gl/glut.h&gt;


void putpixe]]></description><category></category></item><item><title><![CDATA[图形学曲面算法：基于Bezier曲线的Bezier曲面绘制]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123513603</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123513603</guid><author>overwhelming_kda</author><pubDate>Tue, 15 Mar 2022 22:08:33 +0800</pubDate><description><![CDATA[图形学题总结
一. 论述题（共1题，100分）

(论述题)一、实验目的：
1.了解OpenGL下简单曲线/曲面绘制编程的基本思想；

2.掌握OpenGL下简单曲线/曲面绘制编程的基本步骤；
二、实验原理：
在OpenGL中，可以使用下面函数便捷地实现曲线和曲面的绘制：
（1）Bezier曲线绘制:
Void glMap1{fd}(Glenum target, TYPE t1, TYPE t2, Glint stride, Glint order, const TYPE *points);
或者   gl]]></description><category></category></item><item><title><![CDATA[图形学基本算法：Bresenham算法]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123490826</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123490826</guid><author>overwhelming_kda</author><pubDate>Mon, 14 Mar 2022 22:57:38 +0800</pubDate><description><![CDATA[计算机图形学入门算法Bresenham算法]]></description><category></category></item><item><title><![CDATA[数据结构算法总结（c++）]]></title><link>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123407197</link><guid>https://blog.youkuaiyun.com/overwhelming_kda/article/details/123407197</guid><author>overwhelming_kda</author><pubDate>Mon, 14 Mar 2022 21:44:43 +0800</pubDate><description><![CDATA[冒泡排序
for (i=1; i&lt;n; i++)
if (a[i-1]&gt;a[i])
{ tmp = a[i-1]; a[i-1] = a[i]; a[i] = tmp; }
void bubbleSort(int a[], int n)
{ int i,j,tmp; int changeFlag=1;
for (j=n; j&gt;1; j–)
{ if (!changeFlag) break; //上一轮无交换
changeFlag = 0;
for (i=1; i&lt;j; i++)
if]]></description><category></category></item></channel></rss>