自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

飞天大蟾蜍的专栏

飞天大蟾蜍

  • 博客(134)
  • 资源 (4)
  • 收藏
  • 关注

原创 jps(Jump Point Search)跳点寻路算法代码实现

JPS(jumppointsearch)寻路算法JPS(jumppointsearch)跳跃点寻路算法是对AStar寻路算法的一个改进。AStar算法在扩展节点时会把所有相邻的节点考虑进去,当地图比较大时,openList中的节点数量会很多,搜索效率较低。在两点之间没有障碍物时,那么中间的节点对我们来说是没有用的,不希望添加到openList如下可以看到JPS算法不是每个节点都紧密连接的,而是跳跃性的或者说只有需要转弯的节点(也叫拐点)才会被考虑,所以叫跳跃点(JumpPoin。..............

2022-07-16 17:27:36 1308

原创 rvo动态避障算法源码分析

rvo动态避障算法源码: https://github.com/snape本文就rvo中动态避障的算法源码做一个简单分析代码取自:https://github.com/warmtrue/RVO2-Unity大约是2021-8-10这个时间取的,是一个例子, 将rvo整合..

2021-08-16 14:42:00 16407 7

原创 [unity3d]recast navigation navmesh 导航网格 寻路算法 源码分析

recast navigation navmesh导航网格算法源码分析Author: 林绍川recast navigation navmesh是unity3d ue4内置的寻路算法

2021-06-01 10:10:28 4973

原创 g729源码分析-10-后置滤波处理(一)

后置滤波处理后置滤波处理,大致有以下几个步骤step 1: 长时预测这段代码的主要目的是利用语音的长时相关来加强当前的语音信号做法是在基音延迟附近搜索最佳基音延迟,利用历史解码出来的激励信号对当前的激励信号做一个加权step 2:共振峰感知加权,这个不用说了,加强共振峰处的能量step 3:倾斜被偿,修正因为共振峰感知加权引入的频谱倾斜

2012-06-05 21:02:09 2335

原创 升级gcc版本到10

笔者的是在这个位置 /usr/local/lib64/libstdc++.so.6.0.28 将此文件拷出 /usr/lib64。在笔者的centos上 /lib64是个链接 实际是指出 /usr/lib64。删除软链接,链接到新生成的 libstdc++.so.6.0.28。centos自带的gcc版本较低,直接下载gcc源码编译安装。gcc10支持协程了,准备一下环境试验一下相应的功能。对应的libstdc++链接需要更改。找出所有的libstdc++用新的gcc编译出现报错。解压后执行目录中的脚本。

2023-01-10 11:16:00 970

原创 linux samba安装配置

修改/etc/sysconfig/selinux 把enforcing改成disabled;然后命令行setenforce 0;

2023-01-05 15:27:43 422

原创 redis linux下布署

redis-server 将它与redis.conf单独拷出来放在一个目录。至少配置6个节点,端口不同即可。在src目录下面会生成。

2023-01-05 11:26:55 526

原创 centos7安装mysql8

卸载默认安装的mariah。使用临时密码进入mysql。远程连接navicat参考。修改root为可远程登陆。先将密码重置成强密码。

2023-01-04 15:34:13 117

原创 Linux查看句柄数

源文地址: Linux查看句柄数_努力者Mr李的博客-CSDN博客_linux查看句柄数注: 部分概念介绍来源于网络当你的服务器在大并发达到极限时,就会报出“too many open files”。1、查看进程占最大句柄数$ ulimit -acore file size (blocks, -c) unlimiteddata seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedopen files ...https://blog..

2022-04-18 10:10:57 5963

原创 mongodb linux下集群搭建

mongodb的集群结构如上图网上有个mongo3.0的集群例子:mongodb分布式集群搭建手记 - 美码师 - 博客园一、架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署、简单操作。 说明 在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PShttps://www.cnblogs.com/littleatp/p/8563273.htmlmongo现在已经是5.0版本,配置过程略有出入router提供入口,..

2022-02-18 15:54:46 1420

原创 go linux生成core dump

设置linux生成core文件:ulimit -c unlimited设置go生成core文件:export GOTRACEBACK=crash这里比c++程序多了一个步骤安装dlv可以参考这个链接goland远程调试linux_lsccsl的专栏-CSDN博客_goland 远程调试本文整合自以下网络文档,可直接阅读源文档百度安全验证https://baijiahao.baidu.com/s?id=1615101405775143768这个文档主要是讲述代码同步,如果不需要可以

2022-02-11 13:49:58 1561

原创 go sqlite接口封装

有两个现成sqlite的封装网址,直接拿来用即可https://github.com/phf/go-sqlite3https://github.com/mattn/go-sqlite3出于对go调用c原理的理解,对三个典型的接sqlite3_open sqlite3_exec sqlite3_close 做了一些go封装测试代码其中接口参数传递比较典型,可以参考一下代码如下:package main// see sqlite wrapper here// h

2021-12-31 15:38:39 750

原创 go调用c函数 参数包含回调函数指针

调用第三方c库函数,接口有个回调函数指针例如:// .htypedef void(*TestCall)(char ** p);void TestCallBack(TestCall func);// .cppvoid TestCallBack(TestCall func){ char actemp1[20] = "test TestCallBack"; char* p = actemp1; char* actemp[1] = { p }; func(actemp);}将

2021-12-30 18:20:07 1488

原创 go调用c/c++ 示例

调用纯c,可以直接把代码嵌入go,如果是c++,笔者没有找到直接嵌入go的好方法笔者找到可行的方法是,把c++代码编译成动态库,再做一个纯c接口,调用相应的c++代码对象(不管是struct还是class)统一用void*代替,并提供接口设置对象的成员变量库文件一定要以 libxxx.so libxxx.dll这个的方式命名(go是linux style)示例代码如下(以vsstudio为例,linux下面对应直接make生成.so即可)c++ dll代码d...

2021-12-18 17:58:24 2072

原创 linux下go protobuf使用简介

获取protobuf包gogetgithub.com/golang/protobuf/protogogetgoogle.golang.org/protobuf下载go代码生成工具protoc-3.19.1-linux-x86_64.zip解压unzipprotoc-3.19.1-linux-x86_64.zip编辑.bashrc文件,将生成工具加入PATH环境变量exportPATH=$PATH:/home/lsc/go/go/bin:/home/lsc/g...

2021-11-03 20:12:21 500

原创 linux 下go的使用简介

下载go安装包解压至任一目录 tar xvzf即可在.bashrc (root或者当前登陆的/home/用户名下面)笔者用的是虚拟机,直接上cd /root vi .bashrc添加两行环境变量export PATH=$PATH:/home/lsc/go/go/bin(此处填解压go的bin目录)export GOPATH=/home/lsc/go/gohome (这个目录将存入git上下载的package)wq后,开发环境即完成了工程包依赖管理go mo...

2021-10-20 10:04:12 1046

原创 unity gpu instance skin mesh骨骼动画

运行效果图如上原理很简单,1 先对动画进行采样(利用Animator StartRecording/Update/StopRecording这三个接口)2 然后回放(利用Animator StartPlayback/Update/playbackTime这三个接口)3 从SkinnedMeshRenderer里取出mesh数据(该mesh数据应该是包含bone index的)对每个bone(就是transform)计算变换矩阵4将生成的矩阵数据存入纹理5将纹理传递给...

2021-10-12 18:14:00 3155

原创 unity gpu instancing

Unity gpu instancingunity可以自动合并相同的material对象渲染将对应shader enable instancing的选项勾上本文说明一下直接调用unity api的方式,实现合并渲染参考opengl gl_Instanceunity提供了一组api,向gpu批量提交渲染数据以其中的一个为例Graphics.DrawMeshInstanced参数为网格数据,shader,以及每个instance的变换矩阵Material.SetB

2021-09-24 10:28:56 1942 1

原创 unity urp raytrace体积光god ray效果

试了一下在unity中使用raytrace方式实现体积光,运行效果如下raytrace开销较大,采样加到200几乎卡得跑不动了首先在光源处拍摄场景(unity对mainlight做了这个处理,并且是级联可设置)基本原理是在全屏路径下,根据场景深度,还原出世界坐标根据世界坐标判断是哪个裁切球(如果不是级联阴影,比如spotlight就不需要这个操作)然后将世界坐标变换到光源观察坐标light_view_pos再根据投影矩阵对应到光源纹理的深度纹理比较当前点在光源摄像

2021-06-24 17:37:25 1719 6

原创 Unity urp级联阴影接缝问题

Unity urp级联阴影接缝问题试了一下unity自带的阴影,发现有接缝问题,上网找了一些解决方案,都非常庞大,基本是要自己处理级联阴影看了urp的build-in之后,想了一个比较暗黑的方式,简单处理一下,运行对比图如下,左边是unity自带的级联阴影效果,右边是平滑后的级联阴影思路比较简单,从unity内部函数中抽几个出来改造计算当前像素点(世界坐标)位于哪个裁切球,代码如下:强制取某个裁切球的级联阴影映射,代码如下:

2021-06-23 20:09:26 1995 1

原创 unity urp管线扫光效果

urp管线下实现扫光效果基本思路,还是根据深度还原世界坐标(以下简称world_pos),根据坐标的xyz判断是否在一些范围内,然后进行基于xyz两个坐标轴进行扫光这里进行一个扩展,让扫光可以沿着任一方向进行,就是传入一个旋转变换矩阵,对world_pos进行变换,然后判断aabb盒,这样就可以实现非xyz轴方向的扫光效果运行效果如下:可以沿任意方向扫光代码如下:shader:Shader "lsc/screen_scan_...

2021-06-21 17:36:49 1678 1

原创 unity urp内置的SAMPLER SamplerState

处理云阴影,打算直接在post阶段做个贴花了事根据世界坐标的xz做为纹理采样的坐标,加上旋转缩放,形成运行的云阴影采样器要用clamp方式于是这样声明了一个SAMPLER(sampler_CloudTex){Filter = MIN_MAG_MIP_LINEAR;AddressU = Clamp;//no workAddr...

2021-06-21 14:55:44 3046

原创 urp简单入门(unity2020.3版本)

Urp导入urp包,打开package manager窗口,点击install即可创建一个空的unity项目创建一个urp assert在project setting里,选中创建的urp assert先在graphics中红框处选一次再在Quality处选一次(好像不是必要的)camera的属性面板会改变,成这样,把Post Processing勾上...

2021-06-17 18:14:31 4762 4

原创 unity软粒子softparticle仿真实现

unity粒子系统自带了软粒子shader,目的是当粒子的billboard与场景中的多边形相交时,产生一个过渡,避免出现生硬的边界本文还原一下这个shader处理方式运行效果图如下:基本原理就是,在shader的片元处理阶段,判断当前像素点的视深,与_CameraDepthTexture里的深度差值,如果深度小于某个阀值,对alpha进行加一个衰减,产生过渡效果对应的shader代码如下:Shader "lsc/UnlitShader_softparticl...

2021-06-15 15:38:28 2643 3

原创 unity全局雾处理

全屏后处理全局雾网上找到的基本是要计算摄影机边界的4条射线,然后标准化插值后射线方向,利用深度还原场景的世界坐标,代码比较繁琐,要向shader多传递4条射线参数如下图其实有更简化的处理方式, 用unity shader自带的全局变量与函数,加上场景深度,可以直接在shader里面还原世界坐标,然后完成雾效处理unity_CameraInvProjection:投影矩阵的逆unity_CameraToWorld:变换矩阵的逆_CameraDepthText...

2021-06-10 09:59:05 1231 2

原创 视差贴图 parallax map

视差贴图,不同于法线贴图的是,会根据视角调整纹理映射的偏移,从而产生遮挡效果,但在多边形的边缘仍然是平的。(这个需要用浮雕映射来解决,利用gs阶段,输出更多的顶点,从而产生新的多边形,需要硬件能支持相应的渲染管线,题外话,此处略过不表,笔者认为如果边缘一般距离视点较远的话,一般情况下影响的效果有限)首先要有一个高度图根据视角,以观察到的点为终点,以纹理的最大高度(1

2015-05-13 07:46:39 2562

原创 ssao

ssao,基本思路是先得到深度纹理,以及法线纹理.然后画一个覆盖全屏的四边形不一定真画,只要保证四边形的四个点映射到屏幕的四个角即可,所以甚至可以不必传入顶点的坐标数据,根据顶点索引值(dx可以得到,opengl考虑顶点属性)映射到屏幕的四个角在四边形片元(dx对应叫像素)着色器中,查对应的深度纹理,以及法线纹理normal.可以根据深度值还原出

2015-05-07 22:41:13 1918

原创 gpu gem, nvidia纹理阴影实现对比

代码下下来,用2012编译,http://developer.download.nvidia.com/SDK/10.5/direct3d/samples.html找到soft shadowmap的那个例子,缩略图是一个武士拿着剑站在草地上我的笔记本显卡的glsl版本是 4.3的,编译完一跑就报错,修改SoftShadows.cpp 288行    NvSco

2015-04-22 15:52:32 2450

原创 dFdy dFdx如何理解

dFdy dFdx这两个函数如何理解笔者更倾向认为这是一个glsl预编译时处理的一个宏,类似c语言的sizeofthe opengl shading language 4.4是这么描述这两个函数的:Returns the derivative in x using local differencing for the input argument p.

2015-04-20 11:06:24 6678

原创 irrlicht圆球与三角形碰撞测试

看了irrlicht terrian例子,里面摄影机重力track中涉及一个球与三角形的碰撞函数:CSceneCollisionManager::testTriangleIntersection代码中注释较为简单,这里稍为补充一下,主要是利用圆球半径为1这个条件建立二次方程求根,得到碰撞发生的时间点椭圆标准化为半径为1的球(通过对三角形的三个顶点实施缩放

2015-02-26 10:17:26 1665 1

原创 q3 bsp碰撞检测

在quake bsp场景中漫游,需要检测是否与场景中物体碰撞,如主角从一个台阶上跳下,经过自由落体,然后接触到地板碰撞是由brush来实现的,brush有多种形式,简单情况下,可以理解为一个六面体(长方体或者立方体),并且六个面都朝内,这样带来一个性质,如果一个点位于某一个面后面,它一定不在brush之内,也就是不与brush碰撞.quake首先确定一条线段

2015-02-10 09:21:27 1866 1

原创 光线跟踪算法

光线跟踪算法,在网上查了一下,大概的思路,可能说得不太清楚,记下来,免得以后忘了。比较容易找到cpu中的算法,gpu的如gsls找一个,不过不能编译通过,也完全没搞懂cpu中的算法容易理解,但处于的几何体基本是球体,平面之类的,而且不涉及纹理,描述原理多于工程实践。根据渲染区域的大小,即宽h和高w,以及摄影机的位置,生成 h * w条光线(逆向的)程

2015-01-15 09:08:47 2076

原创 四元数

.x的骨骼动画关于旋转部分,采用的是四元数存储。即 w,x,y

2014-06-16 17:49:20 1007

原创 投影矩阵推导过程

3d程序经常要用到矩阵算法,比较常见的如旋转矩阵,平移矩阵,以及投影矩阵opengl与d3d均有对应的api进行相应的操作。本文主要介绍一下投影矩阵,(在阅读irricht与ogre代码时碰到了一些问题,发现视截体是根据投影矩阵计算出来的,其实也可以根据视角与摄影机的位置与朝向,计算出视截体的,quake就是这么做的)程序内存中保存的是x y z这样的三维数据,最终

2014-03-24 08:48:36 4065

原创 纹理阴影实现笔记

ogre纹理阴影实现的三种方法ogre包含两种阴影实现技术,阴影体与阴影纹理.阴影体需要主cpu计算出物体的轮廓,同时生成更多的多边形,会降低帧率并且在骨骼蒙皮时,会存在问题(如果采用硬蒙皮,无法计算轮廓,软蒙皮则降低帧率)阴影体只需要将几何体按不同的视角绘制(往显卡数据传输量增加),对帧率影响较小.阴影体实现的原理.假设场影中有一个点光源,

2013-12-31 16:16:10 2570

原创 irricht的水特效

水特效,但代码的名字却是 createHillPlaneMeshsin cos 波长 波动速度 每帧更新, 水面就是由许多点组成。分成若干块,每块贴上水纹理,以及水底的纹理(如水底的鹅卵石),双重纹理。(透明效果还得加入alph)好像很简单?

2013-12-07 23:24:27 1225

原创 irricht阴影体实现笔记

阴影体是一种动态阴影技术。仔细一看,这玩意儿其实很简单。利用的模拟缓冲的功能,把阴影体画进模板缓冲即可。这要求计算出物体对着光线的轮廓。本来觉得,怎么样高效地求出这个轮廓,发现irricht实现得非常简单,同时也意味着不够优化(笔者看的irricht版本是1.7的,可能最新的版本优化了)irricht直接取面对光线的那些多边形,然后利用这些多边形构造阴影体。(可

2013-12-07 23:18:28 1463

原创 irrlicht代码法线贴图相关问题

irrlicht的代码关于法线贴图的范例即 PerPixelLighting。程序准备资源部分,先是一个砖墙普遍纹理,设到 text0然后是一个法线纹理贴图,设到text1(中间经过处理,将对比度,转换成相应的法线数据)然后是在COpenGLDriver::drawVertexPrimitiveList函数中,会走到case EVT_TANGENTS

2013-11-25 22:07:01 1554

原创 ogre的动态光照

光照涉及大量的浮点数运算。ogre做了优化处理对于场景中的每个光源,首先根据摄影机,做一遍过滤。即,无法影响视截体的光源去除形成一个光源数组:mLightsAffectingFrustum对于每一个渲染对象rendableObject(类名大概是这样,派生了n多子类的那个).也要过滤,判断mLightsAffectingFrustum列表里的光源,是否会

2013-11-14 23:01:51 905

原创 curl会飞的问题

不知道为什么,一调curl就飞,于是在程序main加一个次调用(同时也调用了curl_init),就不飞了。猜想是因为多线程调用curl_init引起了。总之,这么一弄,程序就不飞了。。。linux下面很多开源库,是从单线程多进程时代流传下来的。在多线程环境中使用,往往会有意想不到的惊喜,程序满天飞。。。多加注意

2013-11-01 07:39:09 805

g723源码分析注释

笔者在分析g723时产生的注释,希望对语音感兴趣朋友有用 email: [email protected]

2012-05-18

Rhapsody b树算法

container下面存放在诸如红黑树 avl树等常用的容器算法 storage目录下面存放在b树算法 其它目录存放了一些os api以及一个简单应用程序框架。

2009-01-16

foolib_c_develop_lib

实现了常用容器(rbtree heap vector hash list) 快速排序算法等

2007-08-14

红黑树的源码与测试函数

rbtree源码与测试函数

2007-05-15

空空如也

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

TA关注的人

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