可以直接在C++里面写类似RSL的shader了

可以直接在C++里面写类似RSL的shader了

今天我搞定了一个新技术

可以直接在C++里面写类似RSL的shader了

我简要介绍一下这个新技术,我还在考虑是否要在我们的项目中应用

这个技术的优势是可以借助现有的C++编译器,将shader直接编译成机器码执行,这样对于raytracing的效率很高,而且提供像RSL一样友好的编程接口

我用了一些比较邪门的tricks,现在可以直接用C++写类似RSL的shader,但是和RSL还有一定差距,shader写出来类似这样:

SHADER( phong, surface phong ( float a, float b, vector c, vector output d ) )

surface phong ( float a, float b, vector c, vector output d )
{
 Ci = 0;
 c = 1 + vector( 1, 2, 3 ) + vector( 1, 2, 3 ) + 3;

 float dot = c & c;

d = vector( 5, 6, 7 );

 illuminance_all( "catergory", point(1,2,3) )
 {
 }

 illuminance( "catergory", point(1,2,3), vector(4,5,6), PI/2 )
 {
 }
}

END_SHADER( phong )

这里例子里面,和RSL相比,就是头尾需要多两行
SHADER( phong, surface phong ( float a, float b, vector c, vector output d ) )
END_SHADER( phong )

中间部分几乎一样,差别就是点乘不允许用RSL的.而必须使用&,另外,vector构造的时候不能指定space,而且output关键字只能写在类型的后面而不是前面,还有illuminance的两种形式不允许重载,其中一种必须写成illuminance_all

我想这点差别还是可以接受的吧?

至于vector构造的时候不能指定space的问题,可以用类的模板成员函数解决,只是写的时候,不能像RSL一样写:
vector "space" (x,y,z)
而必须写成:
vector_<space>(x,y,z)

这就要求我们稍微修改一下规范,但是大体还是很像RSL的吧,你们觉得是否应该在项目中应用,还是我们要按照RSL的传统做,弄编译器和虚拟机?

posted on 2007-09-27 20:05 Len3d 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/len3d/archive/2007/09/27/908428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UDT中select异常

转载&#xff1a;http://blog.csdn.net/seebit/article/details/6050428 select, selectEx的参数采用了stl的容器&#xff0c;在DLL方式下&#xff0c;会发生异常。 select传入的容器内的对象在DLL内部发生释放操作时&#xff0c;会抛出异常&#xff0c;因为主程序和DLL申请的内…

iOS中有两种支持机制:Notification和KVO(Key-Value Observing)

KVO是iOS中的一个核心概念&#xff0c;简单理解就是&#xff1a;关注Model某个数据&#xff08;Key&#xff09;的对象可以注册为监听器&#xff0c;一旦Model某个Key的Value发生变化&#xff0c;就会广播给所有的监听器&#xff08;http://blog.chinabyte.com/a/1557371.html&…

Apache与Tomcat有什么关系和区别

常在用apache和tomcat等这些服务器&#xff0c;可是总感觉还是不清楚他们之间有什么关系&#xff0c;在用tomcat的时候总出现apache&#xff0c;总感到迷惑&#xff0c;到底谁是主谁是次&#xff0c;因此特意在网上查询了一些这方面的资料&#xff0c;总结了一下&#xff1a; …

“电脑人才”是怎么炼成的

好长一阵子没有写什么了&#xff0c;其实自己一直想一些电脑方面的书籍&#xff0c;希望给那些想要学习&#xff0c;而没有人指点的朋友们做个参考&#xff0c;或者给那些低学历的朋友做指导&#xff0c;总之希望把不要像我走了那么多弯路。可惜的是要生存&#xff0c;要工作&a…

UDT源代码下载链接

对UDT有兴趣的可以下载UDT对应的源码进行研究&#xff0c;下面给出了一个开源中国的连接&#xff1a; UDT最新源码下载地址&#xff1a;http://sourceforge.net/projects/udt/files/latest/download?sourcedirectory.

声音与年龄

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;最近一年一直从事音频相关的工作&#xff0c;今天刚好看到卓老师的一篇和声音相关的文章&#xff0c;分享给大家。摘要&#xff1a;今天布置了这学期信号与系统的小论文作业。有参加了上海中学生的科技节作品评选。他们的一…

深入Django(1): 通用视图 (generic views)

如果对Django的基础部分尚不熟悉&#xff0c;请参考《Django实战》系列。 内容提要 1. 回顾Django的视图函数&#xff08;view function&#xff09; 2. 在视图函数中使用模板 3. 简化视图函数的两个工具 4. 使用通用视图函数 5. Django提供的通用视图 1. 回顾Django的视图函数…

系统字体的Regular、Light等几种名称的区别

以苹果系统中的PingFang SC系列字体为例&#xff0c;其中常见的有下面几种类型可以细分如下。 PingFang SC ExtraLight 苹方 特细 PingFang SC Light 苹方 细体 PingFang SC Regular 苹方 常规 PingFang SC Medium 苹方 中等 Pi…

J2EE WEBWORK FRAMEWORK安全隐患

TEAM : I.S.T.OAUTHOR : KJ021320转载需注明作者,未经作者同意,不得用于任何形式的商业活动 WebWork是由OpenSymphony组织开发的&#xff0c;致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。框架本身就是抽象空实现的&#xff01;一般很少会给程序带来0day漏洞,但是因为W…

使用 servlet 连接数据库

1.项目工程 web.xml 配置 1 <servlet> 2 <description>This is the description of my J2EE component</description> 3 <display-name>This is the display name of my J2EE component</display-name> 4 <servlet-name>DBSer…

我用涂鸦模块做的报警系统

在上次发的涂鸦的文章之后涂鸦的这套宠物SDK设计&#xff0c;真香最近刚好有一个朋友需要做一个DEMO&#xff0c;这个DEMO是和图像识别相关的&#xff0c;我这个朋友在一个烟火报警的设备&#xff0c;大家都知道我们住的小区里面都会有一个监控系统吧&#xff0c;监控系统里面是…

Lnmp环境安装禅道项目管理软件

1、本地环境 CentOS Linux release 7.5.1804 (Core) PHP 7.1.0-dev (cli) mysql Ver 14.14 Distrib 5.7.22 nginx version: nginx/1.11.1 2、下载禅道开源版安装包并安装 神道官网地址&#xff1a;https://www.zentao.net/开源代码下载地址&#xff1a;https://www.zentao.net…

二叉树的非递归操作

这里涉及到二叉树的非递归操作有&#xff1a;先序遍历、中序遍历、后序遍历数据结构树结点&#xff1a;structNode { chardata; Node *left; Node *right; };标志&#xff1a;enumTag{goLeft, goRight, goBack };goLeft指示访问左子树goLeft指示访问右子树&#xf…

UDT源码剖析(二):UDT自带例程recvfile注释

这几天学习了UDT自带的例子&#xff0c;结合源码进行了测试如下&#xff1a; #ifndef WIN32 #include <arpa/inet.h>#include <netdb.h>#else#include <winsock2.h>#include <ws2tcpip.h>#endif#include <fstream>#include <iostream>#…

建立公司

最近标哥说有创业的想法&#xff0c;然后我帮忙搜了下关于创办公司的一些文章&#xff0c;晓宇的这篇文章把创业的过程写了个大概&#xff0c;也分享给大家&#xff0c;如果有创业想法的&#xff0c;按照这样的思路去寻找自己的合伙人。 自从17年4月份开始辞职创业&#xff0c;…

想在创建虚拟机的时候指定ip调研

想调研一下libvit xml能否提供类似的配置选项&#xff1a; xml应该写成这个样子&#xff0c;预先要在宿主机上面创建br0&#xff0c;配置要分配指定ip Using an existing host bridge Since 0.9.4 This shows how to use a pre-existing host bridge "br0". The gues…

UDT源码剖析(三):UDT::startup()过程代码注释

调用路线 UDT::startup()->CUDT::startup()->CUDTUnited::startup() 1 int startup() 2 { 3 return CUDT::startup(); 4 } 1 int CUDT::startup() 2 { 3 return s_UDTUnited.startup(); 4 } 查看源代码 打印帮助1 int CUDTUnited::startup() 2 { 3 // 开启一个…

第五节 CImage和CBmp(二)

由于这个库主要用于VC MFC下开发应用&#xff0c;因此目前可以下载到版本只支持MFC开发。如果您需要标准Win32的库&#xff0c;可以在回复时留下您的邮箱&#xff0c;或跟我联系。Email&#xff1a;wuchunlei163.comQQ&#xff1a;819543772EasyAnalysis图像分析库测试版以及源…

Linux 新系统易用性向 Windows 看齐

大家好&#xff0c;今天是一年一度的高考&#xff0c;不知道各位在多年以前有没有后悔选择电子专业&#xff0c;如果再给你一次机会&#xff0c;你会选择其他专业吗&#xff1f;以下是内容正文&#xff0c;由黄工整理&#xff01;来源 | 网络嵌入式开发&#xff0c;很多工程师都…

深度剖析SOC高性能实时事件关联分析引擎

【引言】安全管理平台&#xff08;SOC&#xff09; 的一项关键技术就是事件关联分析。借助实时的事件关联分析引擎&#xff0c;安全管理平台能够发掘出复杂的海量安全日志和事件背后隐藏的信息&#xff0c;引导安全管理人员发现外 部***和内部违规行为。作为本系列的第五篇文章…