自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DXT的博客

Learning...All the blog posts are just study notes。My github: https://github.com/DXT00

  • 博客(258)
  • 收藏
  • 关注

转载 [cg][ds] Alpha Test与Alpha Blend技术解析

Alpha Test:简单高效,适合硬边缘透明。:效果自然,适合平滑透明,但性能开销较大。根据具体需求选择合适的技术。Alpha Test和都是在图形渲染管线的像素处理阶段(也称为片段处理阶段)进行的。具体来说,它们发生在片段着色器(Fragment Shader)之后,帧缓冲区(Framebuffer)写入之前。以下是它们在渲染管线中的具体位置和作用:是在管线的哪个阶段做的?

2025-03-21 10:02:33 17

原创 [cg][UE] Mali Streamline抓帧

在capture settings 里要设置抓帧的时间,如10:05 表示10分钟 05秒。尝试用 Streamline 对mali型号的手机抓帧,但一致闪退。再重新start capture就能看到各种metrics了!

2025-03-18 19:46:38 190

原创 [cg] 使用snapgragon 对UE5.3抓帧

链接: https://pan.baidu.com/s/1kSxHDQri8nP-X_amBIi3bw?最近想要抓opengl 的api,renderdoc在起应用时会闪退(具体原因还不知道),试了下snapgraon, 还是可以的。,需要把option里的 Use Local Storage for snapshot file 设置成false!Start a Session, 并选择手机上的应用 Luanch。通过网盘分享的文件:snapgragonProfiler。

2025-01-24 22:11:23 385

原创 [cg] glProgramBinary

opengl 通过gpu编译好的 shader 可以存储到二进制文件中,第二次使用的时候直接加载二进制文件即可, glProgramBinary用于加载shader的二进制数据。

2025-01-20 23:08:02 171

原创 [cg] glDrawBuffers MRT的应用

是OpenGL中的一个函数,用于指定渲染结果输出到哪些颜色缓冲区。它通常在多渲染目标(MRT,MultipleRenderTargets)中使用,允许一个渲染操作同时将结果输出到多个颜色缓冲区,而不是默认情况下的单个颜色缓冲区。

2025-01-17 21:18:10 322

原创 [cg] UE5 调试技巧+开启opengl 方式

UE 中 rhi命令的提交是在render 线程,而graphics api 真正的执行是在rhi 线程, 今天想看下rhi的底层调用,但由于是通过task执行的,无法获取到render thread传入的地方,调试起来不太方便。可通过开启下面的命令来调试。2. 关闭RHI多线程。

2025-01-15 23:37:13 476

原创 [cg] android studio 无法调试UE cpp问题

折腾了好久,native cpp库无法调试问题,原因 下面的Deploy 需要选Apk from app bundle!另外就是指定Debug type为Dual,并在Symbol Directories 指定native cpp的so路径。

2024-12-30 22:42:52 333

转载 [cg] vulkan memory --Device/Host visible

Vulkan内存分为2类:Host memory和Device memory。两种内存通过总线联通。

2024-11-22 23:32:10 92 1

原创 [cg] vulkan external_memory

一是通过 map的方式,把显存里的数据读到cpu,拷贝一份cpu data给编码器,但这种方式会有内存拷贝的开销。所以,我们思考是否能直接把显存中的数据直接给到编码器,而省略cpu回读的部分。最近在写硬件编码的代码,渲染器渲染出的RT需要给到编码器做硬编,有两种方法能做。)通过fd 或者window handle 导出,编码器再导入到gpu分配的。二是使用external memory extension, 把显存中的数据(整个过程都在gpu端操作,不需要回读!

2024-11-22 23:21:26 423

原创 Unity commandbuffer

在渲染不透明物体和天空盒之后,当前图像被复制到一个临时渲染目标中,模糊并设置为全局着色器属性。然后在玻璃物体上的着色器对模糊的图像进行采样,基于法线贴图的UV坐标偏移来模拟折射。这类似于shader GrabPass所做的,除了你可以做更多自定义的事情(在这种情况下,模糊)。

2024-03-31 15:13:38 362

原创 [c++] 虚函数表存在哪?

虚函数表属于类,虚函数表的地址是这个类前4B(32bit)/8B(64bit)子类和父类共用一张表。

2024-03-15 20:49:22 268

转载 [cg] vulkan ubo 内存对齐

【代码】[cg] vulkan ubo 内存对齐。

2024-03-07 16:09:35 215

原创 [cg] Games 202 - NPR 非真实感渲染

远处 uv会被缩小,如果还用lod0,会变黑--》远处使用mipmap lod高级别的贴图。比如墙上的竖边,白色部分乘以正数,黑色乘以负数,颜色差会进一步拉大--》出现边界效果。通过设置阈值来增加黑色范围,比喻与视线大于60度就开始描黑。中的信息处理(比如normal,depth上找边界)S-->需要在物体外面一圈上,并且是多个面共享的。背面扩大一圈渲染 (疑问:都要双面渲染?阈值化,在某一范围内的颜色,统一成一个值。通过图像找边界,使用Sobel 核过滤。B-->普通边界(不是下面几种的)

2024-03-05 11:48:48 493

原创 [cg] Games202 -- BRDF

brdf f(i,o)描述的是对于一个入射方向的光,有多少能反射出去。

2024-03-04 21:22:56 938

原创 [cg] Games202- SSR(Screen space reflection)

SSR: 反射光线通过rayTracing 与场景物体求交。

2024-02-28 16:20:16 464

原创 [cg] Games202-realtime raytrcing

一种 spatial filtering 方法,通过充分利用 G-buffer 的各种属性作为参考,来控制滤波的核和权重。实际关键就是在判断高频信息属于噪声还是图像信息,而 G-buffer 是光栅化过程生成的完全没有噪声,因此作为滤波的指导是非常有用的。缺点:噪声多的场景中,通过颜色突变无法区分是噪声还是边界。如果两个像素颜色相差不大-->正常高斯核滤波。如果两个像素颜色相差太大-->高斯权重减小。缺点:所有像素都会糊掉,无法保持边缘。优点:通过颜色突变找到图像边界。

2024-02-27 21:39:18 895

原创 GPU RayTracing

参考自:https://github.com/Ubpa/ToyRTX使用三种Texture 记录场景数据1.SceneData2.MatData3.PackData数据:https://docs.qq.com/sheet/DQ2FqdE1jYWZpTldC?tab=BB08J2SceneData:0 1 2 3 4 type mat_id has material child end OT_Group

2021-10-23 17:01:24 412

转载 NVIDIA RTX and DirectX Ray Tracing

转自:https://developer.nvidia.com/blog/introduction-nvidia-rtx-directx-ray-tracing/?utm_source=wechat_session&utm_medium=social&utm_oi=982728699078164480rtx raytracing加速结构:API: BuildRaytracingAccelerationStructure().分两种加速结构1.底层加速结构如三角形.

2021-08-14 20:39:58 357

转载 std::forward

转自:https://riptutorial.com/cplusplus/example/3898/argument-forwardingstd::forward 用于传递一个或者多个参数给函数Example#Template may accept both lvalue and rvalue references usingforwarding reference:template <typename T>void f(T &&t);In this .

2021-08-14 17:24:51 394

转载 Linux ulimit命令

Linux ulimit命令转自:https://www.runoob.com/linux/linux-comm-ulimit.htmlLinux ulimit命令用于控制shell程序的资源。ulimit为shell内建指令,可用来控制shell执行程序的资源。语法ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p &lt

2021-02-28 16:18:58 237

转载 Linux中mprotect()函数的用法

Linux中mprotect()函数的用法转自:https://blog.youkuaiyun.com/Roland_Sun/article/details/33728955在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。函数原型如下:#include <unistd.h>#include <sys/mmap.h>int mprotect(const void *start, size_t len, int prot);mprotect()

2021-02-28 15:38:41 2699 1

转载 strace 跟踪进程中的系统调用

转自:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.htmlstrace 跟踪进程中的系统调用strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。6.1. 输出参数

2021-02-28 14:50:22 1185

转载 vim 命令记录

注释块:To comment out blocks in vim:press Esc (to leave editing or other mode) hit ctrl + v (visualblock mode) use the ↑ / ↓ arrow keys to select lines you want (it won't highlight everything - it's OK!) Shift + i (capital I) insert the text you wan.

2020-07-25 10:42:44 180

原创 Linux高性能服务器编程笔记 --Chapter4 HTTP代理服务器

分类:正向代理服务商、反向代理服务器和透明代理服务器正向代理服务器:要求客户端自己设置代理服务器地址。客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求资源。反向代理服务器:反向代理被设置在服务器端,因而客户端无需进行任何设置。反向代理指用代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,内部服务器将得到的结构返回客户端。各大网站通常分区域设置了多个代理服务器,所以不同的地方ping同一个域名可能得到不同的IP地址透明代理服务器 :透明代理只能设

2020-06-23 18:09:03 774

转载 C++11新特性:enable_shared_from_this

转自:https://blog.youkuaiyun.com/caoshangpa/article/details/79392878enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被一个 std::shared_ptr 对象...

2020-06-19 19:48:26 298

原创 Linux高性能服务器编程笔记 -- Chapter1 TCP/IP协议栈

查看服务端口号 sudo cat /etc/serviceskali@kali:/etc$ sudo cat services # Network services, Internet style## Note that it is presently the policy of IANA to assign a single well-known# port number for both TCP and UDP; hence, officially ports have two entri

2020-06-19 17:01:31 413

原创 apue笔记--第13章 守护进程

守护进程(daemon)是长期存在的一种进程-->在系统引导启动时装入,仅在系统关闭时终止该版本的Linux使用一个名为 kthreadd 的特殊内核进程来创建其他内核进程,所以 kthreadd 表现为其他内核进程的父进程创建守护进程 code 13_1/* 创建守护进程output:kali@kali:~/Desktop/Linux Study/Hellos/Chapter13$ ps -ajx |grep 7014 1 7014 701

2020-06-18 12:06:59 327

转载 Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比

1、概论 -- 来自维基的解释/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件

2020-06-17 15:41:41 466

原创 apue笔记--第11章 线程

比较线程ID:#include <pthread.h>int pthread_equal(pthread_t tid1,pthread_t tid2)获取自身线程ID#include <pthread.h>pthread_t pthread_self(void);

2020-06-17 12:18:52 239

转载 c 函数指针

typedef void Sigfunc(int);Sigfunc *signal(int, Sigfunc *);解释: 这里的形式和常规的不太一样,在常规的typedef中,更类似于:typedef double wage; //创建一个叫wage的别名,其实wage就是double的意思但是在这里,typedef void Sigfunc(int);在这里的意思是定义一种指针类型Sigfunc,它是一种指向函数void (int) 的指针,也就是说Sigfunc表示.

2020-06-14 10:25:25 294

转载 apue笔记-第9章 进程关系

终端登录:init进程知道那些终端设备可用来登录,并且为每个设备生成一个getty进程网络登录:为了使同一个软件技能处理终端登录,又能够处理网络登录,系统使用了一种称为伪终端(pseudo terminal)的软件驱动程序。BSD登录中,有一个inetd进程-->等待大多数网络连接。inetd等待TCP/IP连接请求到达主机,当一个连接请求到达时,执行一次fork,然后生成的子进程exec执行适当的程序。进程组pid_t getpgrp()获取进程组id..

2020-06-11 21:12:34 225

原创 apue笔记-第8章 进程控制

swapper 进程(系统进程):ID = 0,只负责调度进程,并不执行磁盘上的任何程序init 进程:ID = 1,负责读取与系统有关的初始化文件。init进程不会终止。它是一个普通的用户进程,以超级用户特权运行。/sbin/init...

2020-06-11 10:54:57 227

转载 关于%*.*s

小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。也就是说,前面定义输出总宽度,后面定义输出字符个数。举例:#include <cstdio> #include <iostream> int main() {

2020-06-09 16:49:04 179

转载 Kali google 翻译

转自:https://www.youtube.com/watch?v=UJ5xpOmnkTo下载google 翻译sudo apt install translate-shell查看可以翻译的语言kali@kali:~/Downloads/youdao-dict_1.1.0-0_amd64$ trans -R┌───────────────────────┬───────────────────────┬───────────────────────┐│ Afrikaans .

2020-06-09 15:36:23 1162

原创 Kali 安装

1.下载vmware:https://www.vmware.com/my/products/workstation-player/workstation-player-evaluation.html2.下载kali:https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/安装vmware后看到多了VMware两个虚拟链接使用VMware的好处: windows和Linu...

2020-06-09 15:29:23 776

转载 Real-time RTX RayTracing 1

Ray tracing 加速结构:

2020-06-08 15:29:33 355

原创 apue 笔记 -第7章 进程环境

第七章 进程环境内存布局通过size 查看 text段,data段,bss段大小kali@kali:~/Desktop/Linux Study/Hellos$ size /usr/bin/cc text data bss dec hex filename 757686 8528 14512 780726 be9b6 /usr/bin/cc获取环境变量 getenv#include <stdlib.h>#inclu

2020-06-04 12:19:38 237 1

转载 由highmap计算法向量

转自:Calculate Normals from HeightmapFrom vector calculus, the normal of a surface is given by thegradient operator:A height maph(x, y)is a special form of the functionf:For a discretized height map, assuming that the grid size i...

2020-05-14 14:38:26 302

转载 c++ std::vector 使用Erase–remove idiom删除特定的value

wiki: Erase–remove idiom一般删除vector中的某个值,需要遍历整个vector找到该值的下标再erase.采用erase-remove方式可以避免多次后续元素前移These algorithms do not remove elements from the container, but move all elements thatdon'tfit th...

2020-05-08 12:16:26 762

原创 [BlackPearl引擎开发记录 6] --ImGui

完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/1977d59c505868f63f718cb7d8d22c3f5176cd69ImGui selectable 菜单:const char* entityItems[] = { "Empty","PointLight","SpotLight","IronMan","Cube" ...

2019-10-30 17:04:03 1607

空空如也

空空如也

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

TA关注的人

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