Pavel's Blog

A good picture is equivalent to a good deed.

23. 纹理OBJ文件(Textured OBJ Files)

3D Computer Graphics Programming

在加入uv信息读取的代码之前我们先看一下一个cube中的uv信息的组成: 平面二维uv参数 三角面中顶点队uv参数的索引 void load_obj_file_data(char* filename){ ...... while (fgets(line, 4096, file)) { ...... // Texture co...

22. 解码PNG文件(Decoding PNG Files)

3D Computer Graphics Programming

与动态数组类似的,站在巨人的肩膀上,我们需要引用这个解码png的工程 https://github.com/elanthis/upng 最初上的贴图颜色并没有对应上 查看解码贴图的工程说明,支持的是RGBA格式 //Creating a SDL texture that is used to display the color buffer color_buffer...

Dynamic Stylized Sky Documentation

How to install and use Dynamic Stylized Sky plugin

Welcome Thank you for choosing Dynamic Stylized Sky Welcome to Dynamic Stylized Sky! This documentation serves as your comprehensive guide to understanding, implementing, and customizing Dynamic...

Pavel's Store

Unity Plugins,Models,VFX

Welcome to the store of Pavel. Play Unity Dynamic Stylized Sky on itch.io Unity Dynamic Stylized Sky by Pavel

20. 纹理贴图(Texture Mapping)

3D Computer Graphics Programming

纹理采样(Texture Mapping) 缓存贴图 贴图类型定义 添加uv信息 typedef struct { float u; float v; }tex2_t; texcoord类型二维值(u,v) typedef struct { ...... tex2_t a_uv; tex2_t b_uv; tex2_t c...

19. 光影着色(Light and Shading)

3D Computer Graphics Programming

平面着色(Flat Shading) 平面着色指的是3D模型上每个多边形(通常是三角形)统一地着色。 平面着色编程 在light.h中新写一个类型结构体light_t内含一个三维向量表示平行光照方向。 typedef struct { vec3_t direction; }light_t; 引用light.c中的light extern light_t light; ...

原神甘雨渲染复刻

日式卡通角色渲染

最近面试也是经常被问到关于卡渲的知识,所以将一年前做的面向知乎的甘雨角色逆向复习了一下。 贴图解析 LightMap.r LightMap.g LightMap.b LightMap.a LightMap.r: 存储这区分材质的信息主要是高光类型:BlinPhong或者裁边视角光 LightMap.g: 存储着AO信息 LightMap.b: 存储BlinPho...

9. 三角形和顶点(Triangles and Vertices)

3D Computer Graphics Programming

三角面索引结构体 存储绘制三角面需要的三角形顶点索引值。 typedef struct { int a; int b; int c; } face_t; 在triangle.h中声明三角面结构体。 三角形结构体 存储屏幕空间三角形的三个顶点。 typedef struct { vec2_t points[3]; } triangle_t; ...

8. 固定时间步长(Fixed Time Step)

3D Computer Graphics Programming

SDL_Delay与Busy-Waiting方法 目的:实现固定时间步长,使每帧的更新时间间隔保持一致。 Busy-Waiting(忙等) void update(void) { while (!SDL_TICKS_PASSED(SDL_GetTicks(), previous_frame_time + FRAME_TARGET_TIME)); previous_f...

7. 线性变换(Linear Transformations)

3D Computer Graphics Programming

Sin角度加法和Cos角度加法公式推导 Sin(α+β) Cos(α+β) 2D旋转矩阵推导 通过2d旋转矩阵来理解旋转矩阵 为立方体添加旋转 vec3_t vec3_rotate_x(vec3_t v, float angle) { vec3_t roatated_vector = { .x = v.x, .y = v.y * c...