Pavel's Blog

A good picture is equivalent to a good deed.

12. OBJ文件(OBJ Files)

3D Computer Graphics Programming

1. OBJ Files Wavefront .obj file 在导出模型时需要将面转化成三角面。 顶点信息列表 三角面索引列表 2. Loading OBJ File Content void load_obj_file_data(char* filename){ FILE* file; file = fopen(filename, "r"); ...

11. 动态数组(Dynamic Arrays)

3D Computer Graphics Programming

1. 动态数组 GitHub - gustavopezzi/dynamicarray: A simple dynamic array implementation in C array_push: 用于将一个新元素添加到动态数组中。如果数组容量不足以容纳新元素,则需要扩展数组。 array_hold:用于确保数组具有足够的容量来容纳至少指定数量的新元素。如果数组容量不足,则扩展数组。 ...

10. 绘制线(Line Drawing)

3D Computer Graphics Programming

在上一章节中我们写好了立方体的顶点数据和三角面数据,在这章中将探索如何绘制线条。 绘制线条的方法 在计算机图形学中主要有两种方法绘制线条。 DDA算法(Digital Different Analyzer Algorithm) 原理:是一种增量算法,通过计算直线在x方向或y方向上的增量,逐步绘制线段上的像素。根据直线的斜率决定是以x还是y方向为增量单位。 Bres...

3D Computer Graphics Programming课程笔记专辑

3D Computer Graphics Programming

课程地址:https://pikuma.com/ 2.4 编程流程 2.5 Working with Makefiles 3. SDL设置和颜色缓冲(SDL Setup and Color Buffer) 4. 多个头文件(Multiple Header Files) 5. 向量和点(Vectors and Points) 6. 点的投影(Projecting Points) ...

GPUInstance+Hi-z Map Occlusion Culling+FrustumeCulling绘制草(上)

草的实例化生成和裁剪部分详解

裁剪结果 裁剪前 裁剪后 这篇文章主要总结GPUInstance读取草的数据,处理剔除,实例化生成。 收集场景中的Prefab草和Terrain绘制的草的数据写入json 想要绘制草那先得有每颗草的一些基本信息,位置,大小,旋转以及根据草密度计算的ao值。 对于Prefab直接放置在场景中的草很容易收集它们的这些信息,在场景中遍历那些使用草预制体的对象。而Terrain D...

如何制作融球加载动画?

基于SDF贴图的UI动效制作

1. 前言 最近在pintrest上找到的参考挺有意思的打算在unity中使用shader复刻出来。 最终在Unity中的效果 2.前期准备 2.1 贴图准备 融球的实现可以使用SDF计算,也可以选择使用贴图实现。针对这个效果,我在这里使用ps内描边制作了贴图。 r通道是不动的四个圆,g通道是需要左右运动的圆,b通道存放表情。 3. UIShader 由于我没有按照UIsh...

最新作品集

2024年工作学习作品总结

2024年又快结束了,回顾这一年学习了不少进阶的ta技术,用ComputeShader绘制大量物体并做剔除,用RenderFeature做简单的模糊后处理等。还有在公司做的3D融球角色,虽然是手机小游戏,但是在unity中给融球做的眉清目秀的也是独一份了。不过还有一些遗憾,年前没把风格化山谷的昼夜变换材质细节做好,得留到春节前做了。下面是这些目前作品的技术要点简单介绍。 风格化山谷 昼夜...

手搓融球版星之卡比(下)

使用SDF制作融球角色

在上篇中介绍了绘制融球角色的核心函数,通过光线步进和SDF函数我们获得了融球的隐式表面并且计算出了法线和深度,此篇中我们将开始制作材质和表情。 1. 光照模型实现 //===============Lighting==================== //直接光镜面反射 ...

手搓融球版星之卡比(上)

使用SDF制作融球角色

在本文中,我们将探索如何使用基于 Signed Distance Function (SDF) 的技术来创建和渲染 3D 融球角色如星之卡比或者史莱姆。我们将详细讨论以下关键技术点: 1.使用光线步进(Ray Marching)技术实现融球隐式表面 2.利用指数对数函数构建的平滑最小值函数实现形状间的融合 3.应用有限差分方法(Finite Difference)生成法线 4.实现深度写...