zoukankan      html  css  js  c++  java
  • u3d_shader_surface_shader_5

    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级的方式咯...

    目测以上解释不对...

    改变自己
  • 相关阅读:
    iOS开发之Xcode8兼容适配iOS 10资料整理笔记
    C#流概述
    C#回调实现的一般过程
    ASP.Net MVC的学习
    RAID基本知识
    Infiniband基本知识
    [转]开源实时视频码流分析软件:VideoEye
    [转]高分一号的落后与特色
    [转]MVC,MVP 和 MVVM 的图示
    图文助你打开MS SQL Serever的ldf和mdf文件
  • 原文地址:https://www.cnblogs.com/sun-shadow/p/4764661.html
Copyright © 2011-2022 走看看