- 博客(33)
- 收藏
- 关注
原创 用于HCNetSDK ptz参数的进制转换
实际显示的PTZ值是获取到的十六进制值的十分之一,如获取的水平参数P的值是0x1750,实际显示的P值为175度;获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度;获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。通过以下代码可以按照海康威视的规则进行十六进制和十进制的相互转换。
2024-11-18 17:13:28
280
原创 SRP 实现 Cook-Torrance BRDF
写的很乱!(Bidirectional Reflectance Distribution Function)全称双向反射分布函数。辐射量单位非常多,这里为方便直观理解,会用非常不严谨的来解释说明。,上计算的是在法线所在半球上的所有,在的,公式有俩个部分。即BRDF,从特定的入射方向到出射方向,在某个表面上,的衰减比率。有了比率,还需要知道在物体表面接收到的某个方向上的,所以前半部分是光线沿入射方向到p点发射的,后半部分用表面与入射方向的夹角计算实际接收到的。
2024-11-15 18:02:37
2555
原创 Unity SRP学习笔记(二)
你要写SRP batcher,就不能只写SRP batcher参考了这篇文章DrawCall,Batches,SetPass calls是什么?,DrawCall就是一个CPU向GPU发出的渲染命令,同时告诉GPU我要渲染哪些数据。渲染管线进行一次渲染的步骤为:1)设置一个Shader为当前渲染状态(设置顶点着色器和片元着色器)。2)传递着色器参数,包括各种变换的矩阵(MVP),自定义的各类变量,以及纹理等。3)调用DrawCall,向GPU发出渲染命令。
2024-11-05 17:16:56
1128
原创 Unity SRP学习笔记(一)
主要参考:中文教程部分参考(可选):https://edu.uwa4d.com/lesson-detail/282/1308/0(依照Unity 2019版的内容翻译,不太适用于Unity 2022)本文主要是,在参考以上内容学习的过程中,对一些基于已有内容但还是不太能理解的部分进行了一些额外的补充。
2024-10-23 18:02:37
1349
原创 文章-深入GPU硬件架构及运行机制 学习后记
在 GPU 中,线程通常按warp(在 NVIDIA GPU 中,通常是 32 个线程一组)来调度和执行。一个 warp 中的所有线程是锁步(lock-step)执行的,也就是说,同一个 warp 中的所有线程在同一时间执行相同的指令。然而,当 warp 中的线程遇到条件分支(例如if-else或switch)时,不同线程可能会走不同的路径。此时,warp 会分裂成多个执行路径,每个路径对应一组需要执行的指令。分支引起的显著时间消耗来源于线程发散。
2024-09-11 17:13:46
1287
原创 OpenGL GLFW OIT 实现
这里主要是介绍了两类实现透明物体混合的方法。顾名思义,这种混合方法就以物体为单位,先利用CPU对画面中的目标进行排序,然后从远往近逐个渲染目标,早期的3D游戏很多都是使用这种方式来实现混合。但如果画面中的物体数量非常庞大的时候,在每一帧都用CPU在渲染前先对所有对象做一次排序,渲染性能下降会很明显。同时,在自遮挡、互相遮挡等情况下,混合依然会出现问题。👇下面这种情况就是以立方体为单位排序后按序渲染,当发生互相遮挡的情况时,结果就出错了。
2024-09-06 10:08:14
1275
原创 OpenGL GLFW 深度/模版测试 面剔除 混合与帧缓冲
设置深度函数为GL_LESS就可以解决。即使A,B同时通过片元着色器的判断,由于深度测试和深度写入是。
2024-09-02 18:09:52
1109
原创 OpenGL GLFW 使用ImGUI:多窗口ImGui输入冲突
glfwSetWindowFocusCallback()设置回调是在类的构造函数中实现的,我需要的是在回调函数中实现将类的静态成员变量currentContext设置为当前触发回调的window的ImGui上下文,然后在每次循环调用的派生类的ImGuiRender函数(按自己需求写的用于绘制GUI的函数)的最后将上下文设置为currentContext。看了下之前记录的东西,非常的乱,所以决定接下来按阶段和内容记录学习,这样至少会更有条理。该函数仅处理事件队列中的事件,然后立即返回。
2024-08-29 17:21:49
854
原创 OpenGL GLFW PMX模型 骨骼 学习笔记 m8w3
之前的文章中,实现了顶点,纹理和材质。接下来还剩骨骼,变形以及DisplayFrame。
2024-08-16 17:41:42
835
原创 openGL GLFW PMX模型 学习笔记 m8w2(d2-d7)
这里的BDEF,SDEF和QDEF其实就是不同的蒙皮方法,但这里的叫法和主流叫法有区别,实际内容是一样的。比如在目前主流的模型格式比如FBX,GLTF等中,BDEF更普遍的叫法是。SDEF是一种改进的绑定方法,它提供了更平滑的变形效果,特别是在关节区域。由于不同的顶点对应不同的纹理图像,所以这里还得创建M个EBO,M等于材质的数量,再把各个材质对应的顶点放到对应的EBO中。和之前相同,第一块是纹理的数量,然后按数量取出所有纹理的路径【都是字符串】。同上,第一部分是材质的数量,然后是一系列的材质参数。
2024-08-08 09:20:07
719
原创 openGL GLFW PMX模型 学习笔记 m8w2(d1)
目前UE/Unity都只能靠第三方插件导入Pmx模型,看LearnOpenGL的目的还是想自己实现把MMD模型给导入到游戏引擎中。
2024-08-05 16:09:43
1144
原创 openGL GLFW 学习笔记 m7w4
着色器包装成类,方便调用,具体代码都在教程里;生成Mipmap图像时的过滤方式,也考虑在Mip上采样时的过滤方式。有一直用其他语言并且很多年没有怎么用过C++的友友可能和我有一样的疑问,为什么这里创建一个能够在着色器中使用的纹理这么麻烦呢(包括之前的创建VAO,VBO,EBO)?为啥不能创建一个类似GL_TEXTURE_2D的对象直接使用?
2024-07-26 10:57:32
1019
原创 openGL GLFW 学习笔记 m7w3
后续所有创建出来的VBO在glVertexAttribPointer解释后,会被保存到VAO中,在shader中就可以用location选择属性,同一个VBO可以有多个属性解释后保存到VAO中,VAO中也可以有多个VBO,多个VBO的情况下,即使参数数量不同也不会报错。这里简单试了一下,VBO1是顶点颜色(3项),VBO2是顶点坐标(6项),可以看到一个三角形是没有颜色的,但两个三角形都绘制出来了。详细来说(参考上面的代码),感觉是:首先生成VAO的。图元装配:把点变成图元(点,线,多边形)。
2024-07-19 16:32:42
341
原创 windows 10 anaconda 安装其他版本/降级python版本
这里的Conda Executable不用动,Use existing environment其他的就是咱创建的新环境,名字就是在anaconda nivigator中创建时取得,这里我是python3.6;不清楚出了啥问题,在anaconda nivigator找到了另一种配置其他版本python环境的方法,按下图(我挂了梯子,不挂不知道行不行。
2023-12-13 18:05:14
936
1
原创 Exception: URL fetch failure on https://storage.googleapis.com/keras-applications/efficientnetb0_not
然后把本地下载的这个模型放到.keras/models/路径下就好了,这个路径应该是/home/user1/.keras/models/,但我用的Autodl,所以路径是/root/.keras/models/这里的不是efficientnetb0_not是其他的什么v-2s啊啥的,解决方法都一样;进入failure的连接,这里是。来查看隐藏的文件夹;
2023-11-17 13:53:03
706
原创 Babylonjs学习笔记 设置skybox(天空盒)
ps. 推荐一个网站,可以将全景图片转换为立方体贴图🥰,注意选JPG格式。用其他天空盒只要修改路径就行了,默认初始路径为。(PNG不行)格式的图片。
2023-06-02 01:07:09
1054
原创 Babylonjs学习笔记 ES6导入本地模型(glb格式)
输入的参数分别为:模型路径(不包括模型文件本身),模型文件,场景,function。需要注意的是模型路径是从项目的public文件夹开始的,而不是.ts文件所在的文件夹,所以这里的路径用。路径来node_modules文件夹,不同的项目可能需要改成babylonjs包相应的路径描述(我猜的);其他就没有了,这些就可以保证本地模型能够正常导入场景了。ps.这一行代码整了一下午🥴。
2023-06-02 00:54:00
1624
原创 TypeScript中的()=>{}
runRenderLoop是一个渲染循环函数,其参数也是一个函数,返回值为空。()=>{}在js中称为匿名函数,调用时执行的是{}内的语句。()=>{}(),在后面加一个()表示定义后直接调用。学TypeScript遇到的一种没见过的写法。ps.这种写法还蛮怪的。
2023-06-01 15:19:27
635
1
转载 小学六年级数学应用题
1、师傅与徒弟两人共加工零件105个,已知师傅加工零件个数的3/8与徒弟加工零件个数的4/7的和为49个,师、徒个加工零件多少个?2、金放在水里称,重量减轻1/19;银放在水里称,重量减少1/10。一块重770克的金银合金,放在水里称师720克,这块合金含金、银各多少克?好难 啊 我有点看不懂 我也是六年级啊不过我有亲身体会,这种题目要自己做要不然还是会不懂的要不你去问问老师 父母 或同学...
2022-06-10 23:52:17
330
3
原创 Java 值相同的String使用“==“关系运算符结果为false
在Java中,value值相同的两个使用new创建的字符串使用"=="关系运算符结果为false。
2022-06-07 01:27:37
1008
原创 ASP.NET 页面布局设计(奖学金管理系统起始页)
参照页面:中国科学技术大学统一身份认证系统 (ustc.edu.cn)背景样式:<div class="auto-style1" style="padding:0; margin:0;background-image: url('image_updata/a6f8f-ly8wk.png'); height: 98%; width: 99%; position: absolute;">设置 height: 98%; width: 99% 避免出现下拉框。Login_div样
2022-05-29 23:05:12
218
原创 UnityShader 屏幕后处理
亮度,饱和度,对比度调整需要对屏幕进行后处理,实现需要获取屏幕的画面,在Unity中,使用Graphics.Blit(source, destination, material)来处理屏幕画面,source为原纹理,destination是目标纹理,material为材质,该函数会使用material.shader来处理原纹理,然后返回目标纹理。对原纹理的处理与对贴图纹理的处理相同。挂载在Camera上的脚本:using System.Collections;using ...
2022-02-24 18:11:42
618
原创 UnityShader 顶点动画
顶点动画是在顶点着色器中对顶点先进行偏移,然后做MVP变化,来模拟动画效果。Shader "Custom/WaterMat"{ Properties { _MainTex ("Texture", 2D) = "white" {} _WaveSpeed("WaveSpeed", float) = 1 _WaveScale("WaveScale", float) = 10 } SubShader ...
2022-02-22 18:40:33
613
原创 UnityShader 纹理动画
序列帧动画Shader "Custom/ImageSequenceAnimationMat"{ Properties { _MainTex ("Texture", 2D) = "white" {} _HorizontalAmount("Horizontal Amount", float) = 1 _VerticalAmount("Vertical Amount", float) = 1 _Speed("Speed", f
2022-02-22 16:33:17
156
原创 UnityShader 玻璃效果与程序纹理
玻璃效果// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/Glass"{ Properties { _MainTex("MainTex", 2D) = "white" {} _TexScale("TexScale", Range(0, 1.0)) = 1 _NormalMap("Normal
2022-02-22 14:39:19
382
原创 UnityShader笔记 Cubemap
反射效果使用CubeMap可以实现金属表面的反射效果// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/ReflectionMat"{ Properties{ //TintColor:色调
2022-02-18 12:23:49
172
原创 Unity ScriptableWizard窗口
官方API见:UnityEditor.ScriptableWizard - Unity 脚本 API (unity3d.com)使用该API可以轻松的在Unity中创建编辑器向导,以独立运行的脚本,不需要挂载在GameObject上也可以运行。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class RenderCubeMapW..
2022-02-16 15:21:16
2807
原创 UnityShader 透明效果
关于渲染队列:实现透明度测试效果clip(x):如果给定参数的任何一个分量是负值,则舍弃当前像素的输出颜色。// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unlit/AlphaTestMat"{ P
2022-02-15 14:15:09
334
原创 Unity纹理基础
单张纹理材质实现:Shader "Custom/SimpleTextureMat"{ Properties{ //TintColor:色调 _Color("TintColor", Color) = (1.0, 1.0, 1.0, 1.0) _MianTex("Maintex", 2D) = "white"{} _Specular("Specular", Color) = (1.0, 1.0, 1.0, 1.0...
2022-02-14 14:36:16
506
原创 在UnityShader中实现漫反射光照模型
关于模型空间,世界空间等的区别可见:(23条消息) D3D11世界空间,观察空间和模型空间(静态摄像头)_x-2010的笔记-优快云博客_观察空间逐顶点的漫反射光照实现:Shader "Custom/DiffuseVertexLevel"{ Properties { _DiffuseColor("color", Color) = (1.0, 1.0, 1.0, 1.0) } SubShader { ...
2022-02-13 14:27:02
217
原创 UnityShader-基础篇
一段基础的UnityShader代码如下(该代码无Properties部分):Shader "Custom/StandardShader"{ SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" .
2022-02-12 22:34:04
649
原创 VS2019项目C++语言标准更改为C++17
std::optional<Texture> texture;error:namespace"std"没有成员"optional"原因:VS2019的C++语言标准默认为C++14。解决方法:将项目属性中的C++语言标准从默认值改为C++17即可。
2021-12-05 22:59:08
4108
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人