CubeMap 的实现

参考:

http://blog.csdn.net/candycat1992/article/details/21827365     制作cubeMap三维纹理,surface shader实现(此妹子真是我等学习的榜样,自行惭愧)

http://www.cppblog.com/Leaf/archive/2011/01/07/138106.html   原理

http://my.oschina.net/u/138823/blog/181131

实现结果:右侧小球

一:cubeMap的制作和u3d小Tips制作:

有趣。主要是u3d都现成的...

public Cubemap cubemap;

类和

 go.camera.RenderToCubemap(cubemap);

 

继承自的ScriptableWizard类应该会进行一次drawCall操作,来在u3d编辑器上绘制对应的Tip...

1.我点击"Render CubeMap"按钮:

    [MenuItem("CookBook/Render CubeMap")]
static void RenderCubeMap()
{
ScriptableWizard.DisplayWizard("Render CubeMap",typeof(GenerateStaticCubemap),"Render!");
}

2.执行typeof(GenerateStaticCubemap)类,

3.检测是否确定好生成CUBE的Pos和载体;

4. isValid = true;则可以执行"Render!"  按钮,进行Create

  go.camera.RenderToCubemap(mCubeMap);//会在指定的Pos进行CubeMap的生成, 应该是啪啪啪六次不同的视锥体吧。

二:立方体纹理

主要是依据eye的位置和vertex Normal进行点乘获取反射向量,我们可以想像一个Box包围着上面的Sphere,然后不同的反射向量对应box不同的纹理位置信息。

o.Emission = texCUBE(_Cubemap, IN.worldRefl).rgb ;

三:教程中的worldRefl和WorldReflectionVector的区别;

  • float3 worldRefl; INTERNAL_DATA - will contain world reflection vector if surface shader writes to o.Normal. To get the reflection vector based on per-pixel normal map, use WorldReflectionVector (IN, o.Normal). See Reflect-Bumped shader for example.

首先worldRefl即世界坐标系下eye和vertex normal的反射向量;

其次,如果想获取ps方式下的反射向量,请使用WorldReflectionVector方式;那么,worldRefl是顶点vs级的方式咯...

目测以上解释不对...

u3d_shader_surface_shader_5的更多相关文章

随机推荐

  1. NavigationBar隐藏后,返回时表现不完美

    是这样的,app首页头部可能要自定义,所以选择把NavigationBar隐藏,所以在viewWillAppear时这样写: self.navigationController?.setNavigat ...

  2. Node入门

    一 node定位 Node.js是一个事件驱动I/O服务端JavaScript环境,是一个基于Google的V8引擎的Chrome JavaScript 运行时建立的一个平台. 二 node安装 (1 ...

  3. 使用 SQL的 for xml path来进行字符串拼接 (group by)

    参考: http://www.cnblogs.com/repository/archive/2011/01/18/1938418.html select convert(varchar(10),c.[ ...

  4. JavaScript小例子:复选框全选

    JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...

  5. 如何自定义ViewGroup

    依照惯例,先从一个例子说起. 很简单,3张扑克牌叠在一起显示.这个布局效果该如何实现呢?有的同学该说了,这很简单啊,用RelativeLayout或FrameLayout,然后为每一个扑克牌设置mar ...

  6. Android简单的ListViewDemo及每个控件的点击事件

    ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...

  7. iOS中View生命周期与布局

    生命周期 说到view的生命周期一般都是指视图控制器的view生命周期. view的创建:loadView 视图控制器(UIViewController)及其子类,无论是手写代码还是storyboar ...

  8. HTML5 结构性标签 行内语义性标签

    结构性标签: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  9. 【原】Mac下统计任意文件夹中代码行数的工具——cloc

    这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按 ...

  10. 不修改Xcode项目加载Reveal

    关 于iOS UI调试工具Reveal的配置,很多初学者朋友可能在网上搜索到一些文章,这些文章大部分都是讲述了如何通过配置Xcode项目,通过加入一些库文件, 并且在程序中编写额外的代码来调用Reve ...