LoS - 2D 视野、光影相关技术研究及分享
About / 关于
一句话介绍一下这个项目,就是基于 Cocos
引擎的 2D 光线追踪、视野范围计算及渲染相关的东西。
Resources / 资源
Repository / 仓库
SSRLoS-CocosCreator_v1 v1.10
https://gitee.com/supersuraccoon/ssrlos-cocoscreator_v1
SSRLoS-CocosCreator_v2 v2.40
https://gitee.com/supersuraccoon/ssrlos-cocoscreator_v2
SSRLoS-Cocos2d-x v3.17
https://gitee.com/supersuraccoon/ssrlos-cocos2dx
Online Demo / 在线演示
SSRLoS-CocosCreator_v1 Demo
https://gitee.com/supersuraccoon/ssrlos-cocoscreator_v1
SSRLoS-CocosCreator_v2 Demo
http://supersuraccoon.gitee.io/ssrlos-cocoscreator_v2
SSRLoS-Cocos2d-x Demo
http://supersuraccoon.gitee.io/ssrlos-cocos2dx
SSRLoS-Cocos2d-x API Demo
codesandbox.io
基于 Cocos2d-x 版本
https://codesandbox.io/s/ssrlos-demo-visibility-744mo
SSRLoS-Cocos2d-x-Visibility
https://codesandbox.io/s/ssrlos-demo-visibility-744mo
SSRLoS-Cocos2d-x-Shadow
https://codesandbox.io/s/ssrlos-demo-shadow-q44qo
SSRLoS-Cocos2d-x-Modes
https://codesandbox.io/s/ssrlos-demo-modes-yxbgj
SSRLoS-Cocos2d-x-Dirty-Detection
https://codesandbox.io/s/ssrlos-demo-dirty-detection-eft0n
SSRLoS-Cocos2d-x-Light
https://codesandbox.io/s/ssrlos-demo-light-0h9gj
SSRLoS-Cocos2d-x-Mask
https://codesandbox.io/s/ssrlos-demo-mask-gihmn
SSRLoS-Cocos2d-x-Multi-Lights
https://codesandbox.io/s/ssrlos-demo-multi-lights-m2ryx
SSRLoS-Cocos2d-x-Multi-Masks
https://codesandbox.io/s/ssrlos-demo-multi-masks-f68bq
SSRLoS-Cocos2d-x-Output-Render
https://codesandbox.io/s/ssrlos-demo-output-render-nwij2
Native Demo / 原生演示
Creator v2.4.0 纯 js 版本
v0.0.1_LoSCCC2_Web.apk
https://gitee.com/supersuraccoon/ssrlos-cocos2dx/attach_files/490534/download
Creator v1.10 纯 js 版本
v0.0.1_LoSCCC1_Web.apk
https://gitee.com/supersuraccoon/ssrlos-cocos2dx/attach_files/490533/download
Cocos2d-x v3.17 jsbinding 版本
v0.0.1_LoSCC_Native.apk
https://gitee.com/supersuraccoon/ssrlos-cocos2dx/attach_files/490531/download
Cocos2d-x v3.17 纯 js 实现版本,无 jsbinding 实现
v0.0.1_LoSCC_Web.apk
https://gitee.com/supersuraccoon/ssrlos-cocos2dx/attach_files/490530/download
Doc / 文档
API / 文档
https://gitee.com/supersuraccoon/ssrlos-doc
Wiki / 百科
https://gitee.com/supersuraccoon/ssrlos-doc/wikis/pages
Plan / 计划
后续的计划,同时包括了很多 2 的光照,阴影相关的技术文章,有兴趣可以看下。
To Explore / 待探索:
https://gitee.com/supersuraccoon/ssrlos-doc/wikis/pages?sort_id=3006599&doc_id=1008958
这里稍微贴一点:
Algorithm / 算法相关
Triangulation
Umbrella Development Log Beamcasting
http://sadumbrella.blogspot.se/2010/11/beamcasting.html
Walls and Shadows in 2D
https://www.gamedev.net/articles/programming/graphics/walls-and-shadows-in-2d-r2711
三角化算法的实现方式,当然这对于地图和障碍物可能会有一些特殊要求。但是换句话说,只要满足了条件,这样的算法的效率肯定是高于现在算法的,毕竟是 量身定做
的算法。
Bresenham
Raytracing on a grid
http://playtechs.blogspot.com/2007/03/raytracing-on-grid.html
直线光栅化算法的实现方式。
Spatial Hashing / 空间散列
Radial Spatial Hashing for 2D Lighting
http://bitnode.co.uk/radial-spatial-hashing-for-2d-lighting/
基于空间散列实现的光照系统,值得参考。
Better Collineation Culling / 优化共线剔除
Culling
的处理中,过滤掉了可能出现的重复的端点,但是对于存在于同一射线上的端点,却是在后期生成射线的步骤中,才过滤掉。这期间经历了生成辅助射线
的步骤。
考虑是否可以在Culling
的阶段就过滤掉,如:
. 对需要保存的端点,计算斜率,象限
. 用 斜率_象限 的形式作为 key
. 判断待添加的端点,是否有已经存在的 斜率_象限
. 没有,则直接保存
. 有,则进一步计算距离平方,只保存一个距离光源更近的端点
目前暂时没有尝试,因为精度的问题,使用斜率作为 Key,很少的情况才会出现命中的情况,换句话说,这种机制可以剔除的共线情况会很少。
需要寻找更好的剔除共射线的方式是最好的。暂时没有尝试。
Better Sort / 优化排序
Better Hashcode / 优化哈希码
Quadtree / 四叉树
quadtree-js
https://github.com/timohausmann/quadtree-js/
Specific Obstacle Support / 特定障碍物对应
Bretter Intersection / 更好的相交算法
Separating Axis Theorem (SAT) Explanation
http://www.sevenson.com.au/actionscript/sat/
Process / 过程相关
Obstacle Merge / 障碍物合并
Connected Component Labeling
https://en.wikipedia.org/wiki/Connected-component_labeling
Clipper - an open source freeware library
http://www.angusj.com/delphi/clipper.php
Event System / 事件系统
生命周期回调
https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html?h=%E7%94%9F%E5%91%BD
Render / 渲染
SDF Ray-Marching / 有向距离场 光线行进
2D global illumination - Shadertoy
https://www.shadertoy.com/view/3ssXRH
lightsdf - Shadertoy
https://www.shadertoy.com/view/lldcDf
SDF arbitary 2D polygon - Shadertoy
https://www.shadertoy.com/view/WdSGRd
sdf 2D lights and shadows - Shadertoy
https://www.shadertoy.com/view/WlSfRD
2D sdf test - Shadertoy
https://www.shadertoy.com/view/3t23DG
2D Signed Distance Field Basics
https://www.ronja-tutorials.com/2018/11/10/2d-sdf-basics.html
2D 光线追踪渲染 - sardinefish
https://www.sardinefish.com/blog/?pid=302#2D%E5%85%89%E7%85%A7%E6%B8%B2%E6%9F%93%E7%9A%84%E5%AE%9E%E7%8E%B0
Less Triangulate Render / 减少三角化渲染
Better Light Shader / 更好的光照
Better Blend Mode / 更好的混合模式
Shadow / 阴影
2D lights and shadows
https://docs.godotengine.org/en/stable/tutorials/2d/2d_lights_and_shadows.html
Shadow Caster 2D
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manual/2DShadows.html
Difference Between Penumbra and Umbra
http://www.differencebetween.net/science/difference-between-penumbra-and-umbra/
Normal Map
cocos2d-x dynamic light tutoria
https://www.codeandweb.com/spriteilluminator/tutorials/lighting-demo-cocos2d-x
Shadow Map
2D Pixel Perfect Shadows
https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
Fast 2D shadows in Unity using 1D shadow mapping
https://www.gamasutra.com/blogs/RobWare/20180226/313491/Fast_2D_shadows_in_Unity_using_1D_shadow_mapping.php
Tutorial 16 : Shadow mapping
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/
用于 2D 游戏光照的 ShadowMap 生成
https://zhuanlan.zhihu.com/p/75517907
Light
光照基础
https://learnopengl-cn.readthedocs.io/zh/latest/02%20Lighting/02%20Basic%20Lighting/
Unity 中实现 2D 光照系统
https://zhuanlan.zhihu.com/p/67923713
Glare Engine
http://tizsoft.altervista.org/glare/docs/init/
Reflect / Refraction
miloyip / light2d
https://github.com/miloyip/light2d
这些效果也可简单的在 Cocos2d-x
和 Creator
中实现:
Voronoi diagrams / 维诺图
Fast Voronoi Diagrams and Distance Field Textures on the GPU With the Jump Flooding Algorithm
https://blog.demofox.org/2016/02/29/fast-voronoi-diagrams-and-distance-dield-textures-on-the-gpu-with-the-jump-flooding-algorithm/
JumpFloodAlgorithm 生成 Voronoi 和距离场贴图
https://zhuanlan.zhihu.com/p/222901923
Misc / 杂项
Better Creator / 更好的 Creator 支持
Better Camera / 更好的相机
Camera 摄像机
https://docs.cocos.com/creator/manual/zh/render/camera.html?h=camera
3D Support / 3D 支持
Byte56 GameDev - A light post
http://www.byte56.com/2011/06/a-light-post.html
Voxel Cone Trace / 基于体素锥形光线追踪
关于 VCT(voxel cone trace——基于体素的锥形光线追踪)Renderer 的代码解读
https://blog.csdn.net/xiewenzhao123/article/details/79875855
Voxel Cone Tracing based Global Illumination
https://blog.csdn.net/bugrunner/article/details/8962535
More Refactor / 重构
Gizmo Support / 编辑器可视化支持
TileMap Demo
在我看来,截至到现在,这个项目的 80%
精力都是放在了算法的优化在优化上,剩下的 20%
精力则是在渲染上。项目陆陆续续已经做了很久,但是还有很多很多想做的。随便写几个:
已有通用算法的优化
定制型算法,针对一些特定使用场景的算法
纯
GPU
算法,半CPU
半GPU
算法算法已经做了很多,要的数据也到手了,那当然在渲染上要花大力气优化,做出酷炫的效果了
更多的就写在文末的 后续计划 里了 ......
项目是从 Cocos2d-x
开始的,目前几乎所有功能都已经移植了 Creator v1, v2
版本。而且所有版本都做了 Native Binding
。
但是因为精力有限,后面的新功能打算暂时只对应 Cocos2d-x
和 Creator v2
,当然 Creator v3
出来的话也会考虑。暂时只对应Web
版,当然原生也是可以直接用的,Native Binding
暂时不会去对应新功能。
最后打个广告,最近上架了一款关于 FBO
的插件扩展,后续也会用到 GPU
阴影算法的实现中,有兴趣的朋友也可以支持一下。
cc.RenderTexture cc.Camera FBO截图/放大镜/Shader 伴侣:
https://forum.cocos.org/t/cc-rendertexture-cc-camera-fbo-shader/99659
以上是由 Cocos 开发者 SuperSuRaccoon
分享的优质技术教程,此文同时参加了 Cocos 中文社区征稿活动,入选优秀稿件。欢迎各位开发者点击【阅读原文】查看原文,为作者点赞,与作者进行交流学习!
LoS - 2D 视野、光影相关技术研究及分享相关推荐
- 基站天线效率相关技术研究
[摘 要]首先分析无线基站的能效情况,提出了基站天线效率在网络性能提升和绿色网络建设中的重要作用:随后分析基站天线效率的影响因素,主要包括阻抗失配的损耗.馈电网络的插损.阵列互耦的损耗和天线罩的穿透 ...
- 运维技能定级标准第5篇——关于运维工程师岗位的规范运维、任务执行力和新技术研究与分享的技能级别设计
运维工程师岗位工作技能的评定类别(7).(8).(9) 规范运维 级别0,没有规范运维观念和意识,什么规范都不懂,运维工作中存在大量的随意性操作. 级别1,有初步的规范运维观念和意识,对运维操作.工作 ...
- 计算机仿真相关文献有哪些,计算机仿真技术研究论文
仿真的建模方法.采用的仿真计算机平台及文件开发软件是关系到仿真技术发展的关键.下面是学习啦小编为大家整理的计算机仿真技术研究论文,供大家参考. 计算机仿真技术研究论文范文一:牵引供电系统计算机仿真研究 ...
- 与计算机图形学相关的研究论文,计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文...
计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文 关于计算机图形学及计算机及计算机动画方面的免费优秀学术论文范文,计算机图形学相关本科毕业论文,关于计算机图形学的相关技术 ...
- 博客与计算机相关的内容无法进行查看,博客检索的关键技术研究-计算机科学与技术专业论文.docx...
博客检索的关键技术研究-计算机科学与技术专业论文 Classified Index: TP391.3 U.D.C.: 681.37 Dissertation for the Master Degree ...
- 腾讯优图|人脸3D重建与渲染技术研究与应用
编辑丨腾讯优图AI开放平台 6月5日-6日,2021全球人工智能技术大会(GAITC 2021)在杭州成功举办.本次大会,旨在汇聚中国科创智慧与活力的同时,与世界建立互通共享的沟通桥梁,在交流中探索共 ...
- 基于目标物体检测技术的工业机器人分拣技术研究
本课题研究的目的.意义 随着我国经济的不断发展,以工业机器人为基础的自动化生产过程在零件装配.货物包装以及3C产业等领域中较为常见.越来越多的企业将以往工厂中通过员工手动完成的任务交给机器人去完成,大 ...
- 17.跟金根回顾敏捷个人:技术研究之道
作为技术人员,经常遇到没有接触过的技术,有时是点滴的小技能,有时可能是大的一个研究课题.在<个人管理 - 从小工到专家>中有一个复用级别的图,其中每一级别都是需要研究的,复用粒度越大的需要 ...
- 十年千篇!人脸识别相关技术最全论文合辑
↑ 点击上方[计算机视觉联盟]关注我们 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行 ...
最新文章
- Saltstack grains组件
- EntityFramework Core自动返回SQL语句
- 2018年最受大家欢迎的五大机器学习工具和五大数据学习工具
- wpf 点击按钮弹出选择框_关于WPF的弹出窗口
- 可汗学院统计学笔记 42-81集
- 【工作总结】银行应用系统架构(二)
- 通过样式class也是可以控制超链接是否弹窗
- 计算机 术语库 excel,Trados直接用Excel做术语库
- 分布式统一框架的设计与实现(数据库)
- 华为网络设备查看设备温度状态检查命令方法
- pug安装与使用教程
- 使用python画等边三角形的程序-python叠加等边三角形的代码编写方法
- VUE + Element-ui 按住Shift实现多选
- 作为网络推广从业人员每天的工作内容和日程
- 计算机语言晦涩难懂? 别怕 我来C
- Python数据分析与机器学习实战<九>titanic数据集分析实例
- 嵌入式技术(单片机原理)基本概念梳理(保研/考研面试)
- 【Arcgis水文分析】使用DEM数据提取流域水系
- 【图解HTTP】确保WEB安全的HTTPS
- 执行update和delete的SQL语句时,报错:Error Code: 1175. You are using safe update mode and you tried to update a
热门文章
- 萌妹也可以学会的浏览器安装油猴插件图文详细教程
- torch.cuda 相关函数
- NDK Clang 编译 FFmpeg 4.4.1 + fdk-aac 2.0.2 + x264 20191217
- 程序员相亲:有人被小三,有人却重逢初中同学!
- appuim java 脚本_APP自动化测试神器之Appium-QQ登录脚本实战(java版)
- c语言暑假作业,暑假作业的答案
- 看了电子计算机表演邓爷爷,小学五年级语文阅读理解解题技巧、重难点分析--转载我要考试网...
- 中国紫外线消毒灯行业深度分析与发展前景规划研究报告2022-2028年版
- 页面一次性加载数据过多时,页面卡死怎么办
- GLAD:ZIG-ZAG放大器