- 博客(12)
- 资源 (11)
- 收藏
- 关注
原创 神光GodRay的简单实现
Vertex Shader:attribute vec4 rm_Vertex;varying vec2 vTexCoord;void main(void){ // Clean up inaccuracies vec2 Position; Position.xy = sign(rm_Vertex.xy); gl_Position = vec4(Positi...
2018-12-04 11:29:44
837
原创 光线追踪中的一些问题
1、性能问题:优化射线求交函数;减少求交次数,如用各种包围体;减少射线,如限定递归层数,当目标对最终颜色贡献很小时,停止发射射线;并行处理,每个像素的追踪都是互不干扰的;使用更好的硬件。2、锯齿问题:可以引入Super-sampling, Adaptive super-sampling, 随机采样jittering,从一个像素的多个子像素发出主射线。3、硬阴影问题:使用面光源,球体光源,加...
2018-11-22 19:31:04
661
原创 一种MMO服务器框架
以下是一种单进程多线程的服务器框架,LoginServer是一个登陆线程,处理用户登陆和角色获取。登陆成功后会连接ChatServer和LogicServer,聊天服务器线程处理所有聊天信息的转发,逻辑服务器线程处理脚本执行,日志、战斗以及其他相关逻辑,逻辑服务器线程可以多开,可以将用户平衡到各个逻辑Server。所有的ServerProcess都会连接到一个管理服务器上,以方便管理员对服务器进行...
2018-11-21 18:58:17
1198
原创 OpenGL各种片元测试
1、Scissor Test:只显示落在一个指定矩形区域内的片元2、Alpha测试:片元Alpha值不满足条件则丢弃,如镂空效果3、Stencil测试:先绘制一个模板到模板BUFFER,然后基于这个模板绘制其他物体,如画物体轮廓、镜面反射等4、Depth测试,Blending,Dithering5、Logic Op:与屏幕上的原有像素作逻辑操作...
2018-11-17 16:21:10
602
原创 点到平面的距离
平面一般方程Ax + By + Cz + D = n dot X+D = 0点到平面的距离公式:(n dot X + D) / ||n||原点到平面的距离:d=D / ||n||平面的归一化:(n dot X)/ ||n|| + D / ||n|| = 0由平面法向量n和原点到平面的距离d可以确定平面方程:n dot X + d * n dot n = 0...
2018-11-08 11:29:36
4159
原创 透视校正插值-OpenGL
在3D渲染中,输入数据是一些primitive信息,包括顶点位置、颜色、纹理坐标等等。在光栅化阶段,primitive(一般为三角形)被转化成一系列的fragment(或者称为像素),这些fragment接下来要做ps操作,此时每个fragment都有位置、颜色、纹理坐标这些属性信息,这些属性信息通过顶点属性用插值方法得到的。下图是clip裁剪锥体的xz平面,从图中可以看出,在投影平面的均...
2018-11-04 12:43:54
1046
原创 变换矩阵
1、变换矩阵变换矩阵可以分解为缩放,旋转,平移矩阵的乘积:M = T * R * S - 右手坐标系当均匀缩放时,旋转和缩放可以交换顺序缩放和平移不可以交换顺序2、子坐标系与父坐标系由在父坐标系中的坐标位置P,和三根轴X,Y,Z可定义一个子标系,按列构成一个变换矩阵[X,Y,Z,P],这个矩阵构成由子标系变换到父坐标系的变换矩阵。DX里面需要转置一下。即按行构造。一个例...
2018-10-27 16:58:25
5842
原创 关于Mipmap
1。为什么用MIPMAP-保留细节:当纹理缩小大于2倍时,使用双线性过滤器会丢失很多细节,纹理高频部分会放大。因为超过4个像素映射到一个像素。可以通过采样更多的像素来解决,但是耗性能。-性能:使用小的纹理texcache命中率会更高,对于小的几何体完全可以用更小的贴图。-闪烁:大的纹理贴到小的几何体导致闪烁使用MIPMAP可以解决以上问题,代价是多占用约1/3的内存。2。各向异性过滤...
2018-10-26 17:26:33
860
原创 光线跟踪框架
1、光线跟踪伪程序// ray:光线// isReflectLightRay:指示是否灯光反射的光线Color RayTracing(ray, isReflectLightRay){ if(ray not intersect object) return 0; intsectPoint = ray.intersect(obj); isInShadow = is intse...
2018-10-26 17:13:24
391
原创 TCP以及TCP中的粘包与分包
1.TCPtcp:确认,重传机制,按序到达拥塞控制:防止过多的数据注入到网络中流量控制:流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)采用TCP协议进行数据传输是不会造成IP分片的。一旦TCP数据过大,则在传输层会对TCP包进...
2018-10-23 16:59:09
3727
原创 渲染器的一些特征指标
Color masking: Pixelshader输出的颜色会乘上掩码Alpha to Coverage: 以较低的成本实现的一种OIT-Order-independent transparentMulti-texturing: 多纹理贴图技术,一个object可以贴多张纹理 Secondary Maps/Detail Maps:附加一幅或几幅贴图在主贴图上面,以弥补normal m...
2018-10-20 21:11:47
810
原创 MMO碰撞检测,战斗,地图行走以及寻路问题
1. 碰撞检测碰撞应该在服务端做,否则客户端就可以作弊了,但是服务端没有场景的几何信息,怎么做碰撞呢,方法是使用一张碰撞图,可以由美术生成,把接受碰撞的物体绘制成黑色,其他地方绘制成白色,对于边界和通道可以由美工在上面手动刷。碰撞图生成之后,当客户端请求行走的时候,根据当前x, z位置和下一个x, z位置,可以计算出在碰撞图中的相应坐标,然后判断它们之间是否有黑色的像素,进而判断出是否会碰...
2018-10-18 19:38:25
3862
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人