【Unity渲染】Camera RenderToCubemap 渲染到立方体纹理
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 渲染到立方体纹理的更多相关文章
- 【Unity Shader】(八) ------ 高级纹理之立方体纹理及光线反射、折射的实现
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) -- ...
- 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) ----- ...
- [Unity Shader笔记]渲染路径--Forward渲染路径
[Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...
- Unity Shader NPR 卡通渲染
卡通渲染的主要原理包含两个方面: 1.轮廓线的描边效果 2.模型漫反射离散和纯色高光区域的模拟 描边: 描边的实现方法采用将模型的轮廓线顶点向法线(或顶点)的方向扩展一定的像素得到.也可通过边缘检测( ...
- 画面渲染:实时渲染(Real-time Rendering)、离线渲染(Offline Rendering)[转]
实时渲染(Real-time Rendering) 实时渲染的本质就是图形数据的实时计算和输出.最典型的图形数据源是顶点.顶点包括了位置.法向.颜色.纹理坐标.顶点的权重等.在第一代渲染技术中(198 ...
- 基于OpenGL编写一个简易的2D渲染框架-05 渲染文本
阅读文章前需要了解的知识:文本渲染 https://learnopengl-cn.github.io/06%20In%20Practice/02%20Text%20Rendering/ 简要步骤: 获 ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.net ...
- 渲染路径-u3d渲染路径比较
Unity支持不同的渲染路径.应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个.不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影. 项目所使用的渲染路径在Player S ...
- Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader
Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...
随机推荐
- 推荐 33 个 IDEA 最牛配置,写代码太爽了!
作者:琦彦 blog.csdn.net/fly910905/article/details/77868300 1.设置maven 1.在File->settings->搜索maven 2. ...
- Consul集群加入网关服务(Spring Cloud Gateway)
Consul集群加入网关服务 架构示意图 外部的应用或网站通过外部网关服务消费各种服务,内部的生产者本身也可能是消费者,内部消费行为通过内部网关服务消费. 一个内部网关和一个外部网关以及一个Consu ...
- HDU-1269 迷宫城堡(连通分量)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- [C] Re-execute itself from elf file.
Re-execute itself from elf file. #define _GNU_SOURCE #include <sched.h> #include <stdio.h&g ...
- (一:NIO系列)JAVA NIO 简介
出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...
- Java解析XML介绍
开发十年,就只剩下这套架构体系了! >>> XML解析器提供了访问或修改用来表示数据的xml文件的能力.Java中提供了多种方式来解析xml文件. 主要分为两类,包括解析XML文 ...
- vue函数防抖和节流
Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...
- openstack stein部署手册 9. neutron
# 安装程序包 yum -y install openstack-neutron-linuxbridge ebtables ipset # 变更配置文件 mv /etc/neutron/neutron ...
- Ansible自动化运维工具(2)
(5) ping模块 检测客户端机器的连通性 ansible webserver -m ping (6) group模块 创建用户的附加组. ansible webserver -m group -a ...
- css 鼠标经过图片缓慢切换图片、鼠标离开缓慢还原
https://blog.csdn.net/qq_26780317/article/details/80486766 一.控制背景图片在一个圆形div内切换 .header .logo { width ...