C++
小雨丶
这个作者很懒,什么都没留下…
展开
-
光线追踪 10秒钟学会贴图纹理
首先把一张图片改名1.jpg 放在C盘下面就是SOIL2库 读入图片 保存在 图片纹理 变量SOIL2库 https://share.weiyun.com/EWOP778A#define STB_IMAGE_IMPLEMENTATION#include "SOIL2\stb_image.h" //包含头#pragma comment(lib,"SOIL2.lib") //包含库unsigned char* 图片纹理;//图片内存int nx, ny, nn;int main(){ .原创 2021-11-22 00:59:29 · 540 阅读 · 0 评论 -
路径追踪 SVGF降噪学习
对比上一帧深度 信息等等差距进行周围像素7v7加权(理解 权重1 1/2=0.5 +0.5 依然不超过1 权重无偏差)然后5v5 滤波3v3高斯模糊时间积累为了重用前一帧中的样本,我们将每个像素样本重新投影到其先前帧,并计算其屏幕空间坐标。这项工作按以下步骤完成:在G-缓冲区中查找当前帧的世界空间位置。使用存储的摄像机视图矩阵将当前世界空间转换为以前的剪辑空间。使用透视投影将以前的剪辑空间转换为以前的屏幕空间。对于每个重投影样本,我们通过比较当前和以前的G-缓冲区数据(法线、位置、对象原创 2021-11-18 20:25:13 · 4309 阅读 · 0 评论 -
实时路径追踪篇 CPU和gpu混合加速
已知cudagpu光线追踪速度好像快很多倍cpu多线程和gpu混合加速原创 2021-11-18 04:44:46 · 251 阅读 · 0 评论 -
实时路径追踪篇 光追材质
路径追踪的是一个从0到100的过程这个渐变的过程非常慢最好在材质上下点功夫比如在一个普通的亮度中 场景预渲染好的贴图可以从70到100的过程可以节约很多原创 2021-11-15 20:45:18 · 273 阅读 · 0 评论 -
实时路径追踪篇 重点内容
场景追踪分开 地面的设置 100多次追踪墙壁设置 少量追踪,集中算力把重点的内容优先渲染好原创 2021-11-15 20:00:52 · 285 阅读 · 0 评论 -
光线追踪 卡通描边效果
判断 屏幕每个像素的物体基本颜色当2个颜色不同时候,替换成黑色原创 2021-11-05 11:33:20 · 99 阅读 · 0 评论 -
实时路径追踪篇 贡献度计算阴影
计算屏幕每一个像素的贡献返回颜色≠0 像素[i][j]++1; //快速计算出阴影的百分比通过百分比,均匀的调整阴影一般的路径追踪颜色需要上百帧才能把颜色叠加出来我们通过贡献度,快速的计算出阴影...原创 2021-11-04 06:57:55 · 92 阅读 · 0 评论 -
实时路径追踪篇 反射和折射
这是4核多线程光线追踪效果 200×200分辨率 就能拥有140帧率,在路径追踪的时候反射和折射1帧就能得到不错的效果原创 2021-10-31 16:59:18 · 181 阅读 · 0 评论 -
实时路径追踪篇 特征猜色
随机记录一些颜色和原色,判断原色变化的屏幕像素,直接替换也可以进行光追原创 2021-10-30 05:45:50 · 108 阅读 · 0 评论 -
实时路径追踪篇 逆变换
转动前获取摄像机所有2d转3d坐标和颜色(好像有个延迟渲染的g缓冲可以快速得到信息)转动摄像机后,重新获取一遍坐标,对比转动前的坐标,一样的把原来的颜色显示到目前的位置上原创 2021-10-29 17:30:10 · 76 阅读 · 0 评论 -
路径追踪 随机追踪法提速一倍
随机2分之一进行 光线追踪,另一半取前一个像素颜色,效果还行,速度提升一倍原创 2021-10-28 02:39:50 · 229 阅读 · 0 评论 -
路径追踪 降噪加速方法 屏幕像素颜色预记忆法 类似AI降噪
vec3 屏幕颜色记忆颜色[WIDTH][HEIGHT]; vec3 期待渲染近似效果[WIDTH][HEIGHT];该加速方法需要 渲染过一次 ,有了样本 才能加速屏幕颜色记忆颜色[i][j]=物体颜色 只在摄像机转动第一帧记录期待渲染近似效果[i][j]=过去 渲染好的图像颜色每次场景变了 ,我们判断屏幕颜色记忆颜色[i][j] 原始颜色,如果上一次记录是白色墙壁并且已经渲染了一次,那么久有了最终 渲染效果,我们直接返回渲染好的颜色期待渲染近似效果[WIDTH][HEIGHT]原创 2021-10-28 00:11:14 · 121 阅读 · 0 评论 -
路径追踪 多线程并行加速
这是CPU的主要#include #include DWORD WINAPI myfun1(LPVOID lpParameter); //声明线程函数DWORD WINAPI myfun2(LPVOID lpParameter);DWORD WINAPI myfun1(LPVOID lpParameter)for (int i = 0; i < HEIGHT; i += 2)DWORD WINAPI myfun2(LPVOID lpParameter)for (int i =1; i原创 2021-10-27 10:12:31 · 100 阅读 · 0 评论 -
路径追踪 光栅化结合
光线追踪光栅化混合渲染前面提到过光栅化先渲染一张图,上面颜色变化的进行光线追踪 称之为动态光线追踪没有变化的颜色不进行光线追踪,节省CPU这样需要光栅化的支持 后台渲染(也称离线渲染 离屏渲染)光线追踪加速思路已经说了,下面就自己把 后台渲染图提取出来配合光线追踪渲染如何移植到光线追踪研究一下,以下代码完整编译无误OpenGL 后台渲染 完整代码#include <iostream>#include <string>#include <fstream&g原创 2021-09-28 02:11:09 · 312 阅读 · 0 评论 -
实时路径追踪篇 碰撞加速整合
1.第一步肯定是减少模型面数 比如一面墙2个三角形计算量只有2个2.按模型分开,分为n*n矩阵中,每条光线计算方向判断矩阵储存求交=真的三角形,那么每次光线都先对常用的进行判断3.复用上一个像素的三角形第一个进行判断,比如一面墙大部分求交都是重复的4.she bvh加速,每次都减去一半三角形5.这里只在第一帧使用,80*80先进行小图的碰撞判断,并把三角形数据扩大到大分辨率,之后大部分光线应该都能用上,这一步可以快速获取到大部分的正确碰撞三角形6.比如建立800*800的三角形求交数据,上一原创 2021-10-27 06:26:00 · 223 阅读 · 0 评论 -
命令行编译 1561 必须定义入口点 解决
# 解决方案:控制台加入 void main() { }窗口程序加入 WinMain() { }以上无法解决 把包含了入口函数 MAIN的.CPP文件 最后一个编译原创 2021-05-16 18:25:38 · 293 阅读 · 0 评论 -
可视化中文C++编程开发支持流程线和表格智能提示
这是我为新手开发的一个c++IDE, 希望大家能支持一下,原创 2021-01-01 03:57:51 · 366 阅读 · 0 评论 -
C++ 学习笔记十四 - C++ char命令传送中文练习
char 关键字传送一段中文字符串 ,并用信息框显示出来char *app();// 声明在调用代码的前面,这是顺序问题int mian(){ char *o= app();//创建一个char* 变量指针o存储app的文本字符串,app()函数返回了文本MessageBoxA(0, o, "test", 0); //信息框框把原创 2016-04-13 08:06:03 · 1196 阅读 · 0 评论 -
VS2013MFC对话框工程学习笔记九 - C++语法的的学习
1. if和else学习了一下if (如果)和else(否则)命令的语法int a=1; int b=4;if(a+b>5) //如果A+B>5 //返回5{return 5;}else //否则返回0{return 0;}2.for(循环)for(int a=0;a != 10;)//("!"是"原创 2016-04-11 20:15:12 · 1054 阅读 · 0 评论 -
VS2013MFC对话框工程学习笔记七 - C++数据类型 - 整形 的简单学习
#include "stdafx.h"#include using namespace std;int _tmain(int argc, _TCHAR* argv[]){int A=1; int B=3;return A+B;}这里的return A+B;返回的结果 =4原创 2016-04-11 19:30:26 · 1617 阅读 · 0 评论 -
C++学习笔记十三 - C++宏替换认识大小写区分
C++有一个非常常用的 预处理宏替换指令 #define 用法 #define if 如果 #define int INT#define bool BOOL这样子等等这样就可以替换一些名字,方便我们记忆,和使用注意:这里的大写INT 是我们自己定义的 可以定以为int 整型但是在参考别人写的代码的时候,这些大写的命令不是小写原创 2016-04-11 21:20:46 · 2048 阅读 · 0 评论 -
C++学习笔记十七 - 简单的类型强制转换
强制转换的时候就是 给变量加个括号,不然就是反过来 数据类型打个括号int _tmain(int argc, _TCHAR* argv[]){ LPCSTR a = "143"; int o =int(a); MessageBoxA(NULL, LPCSTR(o), "对话框(标题)", MB_OK); return 0;}新手不太懂,测试可用如果不对请原创 2016-06-01 02:56:22 · 414 阅读 · 0 评论 -
C++学习笔记十八 - api函数的认识
什么是API函数?在外面的系统之中有很多的****.DLLAPI函数就是系统中所有DLL之中公开出来的功能声明DLL,再声明指定函数名字 那么这个DLL功能你就可以用了不过C++,全部帮我们声明好了,我们包含头文件就可以直接用了包含这个#include 常见的功能如信息框MessageBox(NULL, "这是一个信息框", "标原创 2016-06-01 03:07:30 · 426 阅读 · 0 评论 -
C++学习笔记十九 - API函数的实践
我这次就写了一个取进程id,获取进程的Pid这里用到了几个api函数,实现了取进程ID这样就实现一个功能,其实这是我去参考易语言超级模块翻译过来的写的样子和易语言的也几乎一样,软件功能都是靠API实现的需要什么API功能区参考一下那些模块,翻译过来很有价值一个软件都是靠很多的api实现,我们把api整合起来,收藏起来,下次写代码就调用,就可以轻松写软件了#inclu原创 2016-06-01 03:18:18 · 416 阅读 · 0 评论 -
C++学习笔记二十 - 调用后面的函数需要先声明
在c++中调用一个函数的时候直接调用函数名基本会出错的比如这个OPP函数就要先声明出来需要我们先声明void opp();//比如这个OPP函数就要先声明出来,记住后面要加分号结束,声明函数后,就可以在后面调用了int main (){ opp();return 0;}void opp(){}原创 2016-06-01 03:51:56 · 2669 阅读 · 0 评论 -
C++学习笔记二十一 - 定义宏#define
define 这是一个非常常用的预处理指令可以把英语的变量名,函数名,所有的名字,起一个小名 比如define 如果 ifdefine 信息框 MessageBoxdefine INT int通#define就可以定义自己喜欢的名字了原创 2016-06-01 04:00:19 · 484 阅读 · 0 评论 -
C++学习笔记二十二 - 简单的结构体struct
struct 这个结构体非常的常用用结构体保存一份个人资料读取的时候就指定某部分读取了比如我读取了结构体中的名字信息框显示出来的就是小明的名字struct 小明资料{ int 年龄 = 14; char *名字 = "李小明"; int 身高 = 165;};int _tmain(int argc, _TCHAR* argv[]){ struct 小明资料原创 2016-06-01 04:40:32 · 400 阅读 · 0 评论 -
C++笔记 - 函数传参数学习
默认参数void 子函数(int 参数=100); 声明直接赋值100,那么调用就默认传入定义的main(){return 0;}void 子函数(int 参数一){ }不传参数 NULL 传入NULL好像就可以不用传入了void 子函数(int 参数); main(){子函数(NU原创 2016-06-13 17:29:39 · 373 阅读 · 0 评论 -
现学现用 - C++监视热键源代码
和易语言的功能差不多没用线程和动态数组int 监视热键(子程序指针 响应事件, /*响应事件(热键标识, 其它...), 事件参数数目不限!如果再次监视热键将响应事件!*/ 整数型 键代码, /*触发事件的基本键, 事件在基本键按下时触发, 负数为放开时触发, 1鼠标左键, 2鼠标右键, 更多查询相关帮助*/ 整数型 功能键状态, /*1 Alt 2 Ctrl 4 S原创 2016-06-14 17:17:30 · 5731 阅读 · 1 评论 -
C++学习笔记十六 - 文本处理string.H 类的用法,
一.#include #include using std::string; //名字省略而已int main(){ string 文本 = "我们的明天"; std::cout << 文本.substr(6,4); //用substr取到文本中间的文本字符串,去掉3个字符开始,取4个字符结果是 //一个字母=一个字节原创 2016-04-19 12:10:59 · 525 阅读 · 0 评论