热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

simplenaive无节操光线跟踪

div#container{width:600px;height:600px;background-color:#00

纯用GLSL fragment shader写,定点相机的导航是自己想的挫办法,用世界Y轴做pivot(就是这个造成了万向节问题...果然trackball算法不是这么容易想的..),以投影面对应的鼠标位移反求过原点的任意方向转轴,然后用 神矩阵乘以相机原始位置。光线跟踪就是每个fragment一根光线,大stride过去,小step回来,大hit小miss就停。mandelbulb落于r=1.2球,所以不交的必然miss,交的也要从球表面开始找。迭代公式次数不用高,太精细显卡算爆了也出不来,还特别noisy。为了算法向,一旦hit就再求交2次,结果构成切面算叉乘。Shading是(lambert+highlight)*depth。自家的QUADRO 3000M做到这个卡巴斯基的速度已经是极限了,目测只有chrome(或者还有firefox)能跑得起来。GLSL的if语句果然神器,能不能执行靠概率,光靠分析是看不出来是不是uniform flow的貌似...总之GLSL fragment shader program也不是那么的快(Win64貌似转成DX shader program了,linux没测,N卡是不是可以好好优化也没看,所以结论不绝对),也许应该考虑把CPU和vertex shader好好利用。。上传阉割说明:把window尺寸替换成了固定大小的div的offsetHeight。想要下到本地赏菊可以改回来挑战一下显卡君。
Demo by hellraider

推荐阅读
author-avatar
小虎
每一天,不管用什么方式,我都要变得越来越好!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有