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. 关于condition variable的理解

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  2. Android Studio简单设置

    IDE外观&行为 修改主题,修改全局字体 修改主题,想用炫酷的深色主题,就改成Darcula吧:字体的话,选一个带中文的,要不然会有很多口口,我这里用Microsoft YaHei UI,很不 ...

  3. mac 终端启动 jboss 停留在(Starting) 不能启动joss

    今天下载了jboss,解压后发现standalone.sh,不能够在终端中执行,于是google了一下,原来是由于jdk版本的问题导致jboss一直停在调试状态(貌似是这样说的). 需要把mac系统的 ...

  4. Dex Loader] Unable to execute dex: Multiple dex files define

    在打包的过程中可能会出现这样的问题,原因是有重复的.jar被引用,可以查看你的build path或Java build path,尤其是Android Dependencies等相关android包 ...

  5. git各种命令介绍以及碰到的各种坑

    一.各种命令介绍: git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地 ...

  6. MVC中使用SignaIR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  7. WPF学习之路(九)导航和页面(续)

    生命周期 如果Page1成功导航到Page2,首先会触发NavigationService的Navigating事件,标识导航开始.随后创建Page2对象,并且触发NavigationProgress ...

  8. Tomcat源码分析之—容器整体结构

    Tomcat有多个容器组成,而Container也就是容器与Connecter连接器是Tomcat最核心的两个模块,Connecter连接器接收客户端的请求,并根据客户端的请求传递给Container ...

  9. 烂泥:高负载均衡学习haproxy之安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...

  10. nginx日志切割脚本

    #!/bin/bash ip=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d ...