株洲网站设计公司,别墅装修装饰设计,家庭优化大师下载,个人建网站教程可以直接在C里面写类似RSL的shader了 今天我搞定了一个新技术 可以直接在C里面写类似RSL的shader了 我简要介绍一下这个新技术#xff0c;我还在考虑是否要在我们的项目中应用 这个技术的优势是可以借助现有的C编译器#xff0c;将shader直接编译成机器码执行#xff0c;这样… 可以直接在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