自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 流体模拟引擎splishsplash 数学方法

流体模拟的研究学习博客中,我先阐述流体模拟的数学方法,再阐述流体模拟引擎splishsplash的架构和实现,使用方法。物理仿真是视觉计算中的一个重要研究课题。它具有许多应用,包括虚拟原型,培训模拟器,机器人,用于数字制作的动画软件,包括电影和动画电影中的视觉效果以及计算机游戏。我希望这些示例及其文档能帮助您了解仿真方法。随意在您自己的课题中使用这些示例。

2023-02-05 02:05:43 369

原创 c#编程基础:装箱与拆箱

装箱:值类型转换为引用类型拆箱:引用类型转换为值类型引用类型:任何称为“类”的类型都是引用类型,使用class修饰值类型:所有值类型都称为结构或枚举,使用struct或enum修饰c#中的List()和动态数组ArrayList()有以下区别:1.List()是指定数据类型,较为安全 如List和List,当数据类型不对时会报错,限制数据类型确保了数据安全。而ArrayList()在使用Add()方法存储值类型时要将值类型转换为引用类型且同时可以存储引用类型,如string,是不安全的。

2022-11-27 15:05:56 447

原创 图形学数学-判断向量与点的方位

通过向量判断点的三维位置、判断另一向量的方位

2022-08-23 12:13:24 349

原创 shader学习摘要(九)unity阴影

在前向渲染中,如果场景中最重要的平行光开启了阴影,unity就会为该光源计算它的阴影映射纹理(shadowmap)。这张阴影映射纹理本质上也是一张深度图,它记录了从该光源的位置出发、能看到的场景中距离它最近的表面位置(深度信息)。如果我们想要一个物体接收来自其他物体的阴影,就必须在shader中对阴影映射纹理(包括屏幕空间的阴影图)进行采样,把采样结果和最后的光照结果相乘来产生阴影效果。

2022-08-21 17:32:35 1943

原创 shader学习摘要(八)unity光源类型

1.平行光2.点光源3.聚光灯在前向渲染中我们在unity shader中访问它们的5个属性:位置、方向、颜色、强度以及衰减。#pragma multi_compile_fwdbase此声明可以让我们在使用光照衰减的变量中正确被赋值效果左边设置有2个点光源与1个平行光源,右边为效果左边设置有4个点光源与1个平行光源,右边为效果我们除了可以用纹理采样来减少计算衰减的复杂度(类似哈希表的原理),但是我们可以在代码中使用公式来计算光源的衰减:例如,下面的代码可以计算光源的线性衰减:float d

2022-08-19 16:56:02 1050

原创 shader学习摘要(七)——unity的渲染路径

unity的渲染路径实际上共有两种:前向渲染路径和延迟渲染路径。

2022-08-15 18:16:50 1317

原创 shader 学习摘要(六)透明度混合

透明度混合要先关闭深度写入,原理见流程图:GPU渲染流程:深度测试流程:透明度混合流程:需要进行透明度混合的片元必须通过透明度测试,但不想立即将颜色写入深度缓冲区,如果透明度混合时将遮挡区域的深度写入了缓冲区,那么更新颜色缓冲区时这部分颜色不会发生改变,会出现视觉上的“错误”。如果没有打开深度写入,那么所有片元的深度是相同的,进行混合时不会发生视觉“错误”。...

2022-08-09 11:06:46 296

转载 【KaJiYa改进】Shader头发效果

头发各项异性高光:该shader需使用三张texture进行合成,可以像KaJiYa调节光照环,另外也可以调节Tilling影响发丝,立方体纹理影响整体效果。

2022-08-08 11:07:27 667

原创 shader学习摘要(五)透明度测试

我们在unity中的渲染顺序是视野方向从后往前渲染,如果采取从前往后渲染,前方遮挡物如果为不透明物体,则视野中会出现不透明物体在透明物体前面的假象,如果物体为半透明物体,则会出现渲染颜色的混合结果完全反过来,同样会出现后方物体在前方的假象。透明度测试在AlphaTest队列内渲染即在所有不透明物体渲染之后进行统一渲染以更高效。我们在代码中的Tags标签中我们需要把Queue标签设置为AlphaTest。在unity中,索引号越小的越先渲染,括号内为数值。......

2022-08-06 09:46:19 462

原创 技术美术百人计划:1.2.3 MVP矩阵运算 笔记与作业

谢谢冯乐乐老师的shader入门精要,霜狼大佬的无私奉献。MVP矩阵分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个

2022-07-10 00:30:05 354

原创 shader学习摘要(四)——凹凸映射(法线纹理)

在了解法线纹理前,我们先要了解高度纹理,也就是通过改变物体表面高度,高度纹理存储的(intensity)来表示模型表面的局部海拔高度法线纹理中存储表面法线的方向,法线分量范围在[-1,1],像素分量在[0,1],那么通常像素映射:法线映射:法线纹理制作中使用的空间坐标系:1.顶点的切线空间,z轴是法线,x轴是切线,y轴是法线与切线的叉积(副切线)2.模型本身的模型空间模型空间:1.实现简单,更加直观2.边界平滑切线空间:1.自由度高。2.可进行uv动画。3.可重用。4.可压缩。法线

2022-07-09 22:59:40 382

转载 Unity shader烟雾效果与saturate函数用法

烟雾纹理效果,学习一下主要学习函数saturate归化数据为[0,1]范围

2022-07-09 16:01:47 1536

原创 shader学习摘要(四)——单张纹理

我们通常会使用一张纹理来代替物体的漫反射颜色。在本节中,我们将学习如何在unity shader中使用单张纹理来作为模拟的颜色单张纹理的使用方是在前面的光照模型的基础(这里使用的是Blinn-Phong光照模型)上,将模型原本的颜色乘以纹理的颜色的方法进行的纹理映射代码如下(示例):使用效果如图所示,这里使用的texture type是默认(Default),这是因为经过版本的更新,将texture纹理命名为了Default,实际上,unity默认使用的纹理都是单张纹理Wrap Mode属性中rep

2022-07-05 14:33:21 519

原创 shader基础学习摘要(三)高光反射

在6.2.4节中,我们给出了基本光照模型中高光反射部分的计算公式高光反射求的夹角是模型反射光线与视线的夹角,因为视线光线距离反射光线越近,光照强度越高,与漫反射不同,漫反射是求法线与光源方向的夹角,与视野方向无关,所以即使移动镜头摄像机也不会影响表面光照,而高光反射则与视野方向紧密相关,高光反射时摄像机并不能完全收反射光,只能看到部分光照反射,数值与材质光泽度有关...

2022-06-19 23:53:14 434

原创 shader基础学习摘要(二) 兰伯特光照模型

该节介绍了兰伯特光照模型的三种算法,并进行了对比,引用自shader入门精要

2022-06-18 21:38:44 734

原创 shader基础学习摘要(一)

我通过冯乐乐老师的书籍,为该代码进行了进一步的解释和理解,以作为学习的摘要和后续改进shader的参考。

2022-06-16 00:38:35 120

原创 图形学:Opengl圆和多边形的绘制

1、采用中点Bresenham算法实现带颜色的圆绘制,同时采用OpenGL库函数实现带颜色的圆的绘制。2、采用X-扫描线算法/改进的x-扫描线算法/边缘填充算法/教材或文献中其他算法实现六边形绘制,同时采用OpenGL库函数实现带颜色的六边形绘制。// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdio.h"#include <gl/glut.h>void putpixe

2022-03-15 23:05:41 4770

原创 图形学曲面算法:基于Bezier曲线的Bezier曲面绘制

图形学题总结一. 论述题(共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

2022-03-15 22:08:33 1766

原创 图形学基本算法:Bresenham算法

计算机图形学入门算法Bresenham算法

2022-03-14 22:57:38 510

原创 数据结构算法总结(c++)

冒泡排序for (i=1; i<n; i++)if (a[i-1]>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>1; j–){ if (!changeFlag) break; //上一轮无交换changeFlag = 0;for (i=1; i<j; i++)if

2022-03-14 21:44:43 1272

空空如也

空空如也

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

TA关注的人

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