Unity圣典 传送门:http://www.ceeger.com/Script/Camera/Camera.RenderToCubemap.html

Camera.RenderToCubemap 有4个重载

(1)bool  RenderToCubemap(Cubemap cubemap)

    bool  RenderToCubemap(Cubemap cubemap,int faceMask)

  可以用于在编辑器中生成场景静态立方体贴图。faceMask是一个bitfield比特数,表示那个立方贴图面应该被渲染,每个位对

应于一个面。比特数是Cubemapface枚举的整型值。默认的所有六个立方贴图面都被渲染(默认值63的低6位是打开的)。

 // Render scene from a given point into a static cube map.
//从给定的点渲染场景到以静态立方贴图
// Place this script in Editor folder of your project.
//放置这个脚本到工程的Editor文件夹中
// Then use the cubemap with one of Reflective shaders!
//然后用一个Reflective shaders 来使用这个立方贴图
class RenderCubemapWizard extends ScriptableWizard {
var renderFromPosition : Transform;
var cubemap : Cubemap; function OnWizardUpdate () {
helpString = "Select transform to render from and cubemap to render into";
isValid = (renderFromPosition != null) && (cubemap != null);
} function OnWizardCreate () {
// create temporary camera for rendering
//为渲染创建临时相机
var go = new GameObject( "CubemapCamera", Camera );
// place it on the object
//放置它到物体上
go.transform.position = renderFromPosition.position;
go.transform.rotation = Quaternion.identity; // render into cubemap
//渲染到立方贴图
go.camera.RenderToCubemap( cubemap ); // destroy temporary camera
//销毁临时相机
DestroyImmediate( go );
} @MenuItem("GameObject/Render into Cubemap")
static function RenderCubemap () {
ScriptableWizard.DisplayWizard.<RenderCubemapWizard>(
"Render cubemap", "Render!");
}
}

(2)bool  RenderToCubemap(RenderTexture cubemap)

bool  RenderToCubemap(RenderTexture cubemap,int faceMask)

这个用于实时反射到立方贴图渲染纹理。这是非常耗时的,尤其是所有六个立方贴图面在每一帧中都被渲染。

如果渲染失败这个函数将返回false,某些显卡不支持这个函数。

  同时,一定要将 RenderTexture.isCubemap = true

 using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEditor; // Attach this script to an object that uses a Reflective shader.
// Realtime reflective cubemaps!
//附加这个脚本到使用了Reflective shader的物体上
//实时反射立方贴图
[ExecuteInEditMode]
public class RealtimeCubemap :MonoBehaviour
{
int cubemapSize = ;
//一帧渲染一面
bool oneFacePerFrame = false;
Camera cam = null;
RenderTexture cubemap = null;
Material mat = null; void Start()
{
//在启动时渲染所有六个面
UpdateCubemap();
} void LateUpdate()
{
if (oneFacePerFrame)
{
int faceToRender = Time.frameCount % ;
int faceMask = << faceToRender;
UpdateCubemap(faceMask);
}
else
{
//所有六个面
UpdateCubemap();
}
} void UpdateCubemap (int faceMask )
{
if (cam == null)
{
GameObject go = new GameObject("CubemapCamera", typeof(Camera)); //隐藏在场景中
go.hideFlags = HideFlags.HideAndDontSave;
go.transform.position = transform.position;
go.transform.rotation = Quaternion.identity;
cam = go.GetComponent<Camera>(); ///不要渲染较远的部分
cam.farClipPlane = ;
cam.enabled = false;
}
if (mat == null)
{
mat = new Material(Shader.Find("Custom/RealtimeCubemap"));
mat.hideFlags = HideFlags.HideAndDontSave;
GetComponent<Renderer>().material = mat;
} if (cubemap == null)
{
cubemap = new RenderTexture(cubemapSize, cubemapSize, );
cubemap.isPowerOfTwo = true;
cubemap.isCubemap = true;
cubemap.hideFlags = HideFlags.HideAndDontSave;
mat.SetTexture("_Cubemap", cubemap);
} cam.transform.position = transform.position;
cam.RenderToCubemap(cubemap, faceMask);
} void OnDisable()
{
DestroyImmediate(cam);
DestroyImmediate(cubemap);
} }

【Unity渲染】Camera RenderToCubemap 渲染到立方体纹理的更多相关文章

  1. 【Unity Shader】(八) ------ 高级纹理之立方体纹理及光线反射、折射的实现

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题.    [Unity Shader](三) -- ...

  2. 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) ----- ...

  3. [Unity Shader笔记]渲染路径--Forward渲染路径

    [Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...

  4. Unity Shader NPR 卡通渲染

    卡通渲染的主要原理包含两个方面: 1.轮廓线的描边效果 2.模型漫反射离散和纯色高光区域的模拟 描边: 描边的实现方法采用将模型的轮廓线顶点向法线(或顶点)的方向扩展一定的像素得到.也可通过边缘检测( ...

  5. 画面渲染:实时渲染(Real-time Rendering)、离线渲染(Offline Rendering)[转]

    实时渲染(Real-time Rendering) 实时渲染的本质就是图形数据的实时计算和输出.最典型的图形数据源是顶点.顶点包括了位置.法向.颜色.纹理坐标.顶点的权重等.在第一代渲染技术中(198 ...

  6. 基于OpenGL编写一个简易的2D渲染框架-05 渲染文本

    阅读文章前需要了解的知识:文本渲染 https://learnopengl-cn.github.io/06%20In%20Practice/02%20Text%20Rendering/ 简要步骤: 获 ...

  7. Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】

    Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置:   http://blog.csdn.net ...

  8. 渲染路径-u3d渲染路径比较

    Unity支持不同的渲染路径.应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个.不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影.        项目所使用的渲染路径在Player S ...

  9. Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader

    Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...

随机推荐

  1. 推荐 33 个 IDEA 最牛配置,写代码太爽了!

    作者:琦彦 blog.csdn.net/fly910905/article/details/77868300 1.设置maven 1.在File->settings->搜索maven 2. ...

  2. Consul集群加入网关服务(Spring Cloud Gateway)

    Consul集群加入网关服务 架构示意图 外部的应用或网站通过外部网关服务消费各种服务,内部的生产者本身也可能是消费者,内部消费行为通过内部网关服务消费. 一个内部网关和一个外部网关以及一个Consu ...

  3. HDU-1269 迷宫城堡(连通分量)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. [C] Re-execute itself from elf file.

    Re-execute itself from elf file. #define _GNU_SOURCE #include <sched.h> #include <stdio.h&g ...

  5. (一:NIO系列)JAVA NIO 简介

    出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...

  6. Java解析XML介绍

    开发十年,就只剩下这套架构体系了! >>>   XML解析器提供了访问或修改用来表示数据的xml文件的能力.Java中提供了多种方式来解析xml文件. 主要分为两类,包括解析XML文 ...

  7. vue函数防抖和节流

    Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...

  8. openstack stein部署手册 9. neutron

    # 安装程序包 yum -y install openstack-neutron-linuxbridge ebtables ipset # 变更配置文件 mv /etc/neutron/neutron ...

  9. Ansible自动化运维工具(2)

    (5) ping模块 检测客户端机器的连通性 ansible webserver -m ping (6) group模块 创建用户的附加组. ansible webserver -m group -a ...

  10. css 鼠标经过图片缓慢切换图片、鼠标离开缓慢还原

    https://blog.csdn.net/qq_26780317/article/details/80486766 一.控制背景图片在一个圆形div内切换 .header .logo { width ...