cubemap | The cube map to render to. |
faceMask | A bitmask which determines which of the six faces are rendered to. |
bool не отображена всей области экрана.
Рендер в статическую кубическую текстуру (cubemap) с камеры.
Эта функция наиболее полезна в редакторе для «запекания» статических кубических текстур (cubemaps) вашей сцены. См.
пример ниже. Если вы хотите обновляемую в реальном времени кубическую текстуру (cubemap), используйте RenderToCubemap, который использует
RenderTexture с isCubemap флагом, см. ниже.
Положение камеры, флаги очистки и плоскость отсечения будет использоваться для
рендера в грани кубической текстуры (cubemap). faceMask
является битовым полем, указывающим на то, какие грани cubemap должны быть отрендерены. Каждый
бит, который соответствует грани. Номера битов являются целыми значениями перечисления CubemapFace.
По умолчанию все шесть граней cubemap будут отрендерены (значение по умолчанию 63 имеет шесть младших бит).
Эта функция вернет false
если рендеринг cubemap не удастся. Некоторое графическое аппаратное обеспечение не
подерживает данную функциональность.
Note also that ReflectionProbes are a more advanced way of performing realtime reflections. Cubemaps can be created in the editor by selecting the Create->Legacy option.
See Also: Cubemap assets, Reflective shaders.
// Render scene from a given point into a static cube map. // Place this script in Editor folder of your project. // Then use the cubemap with one of 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.GetComponent.<Camera>().RenderToCubemap(cubemap); // destroy temporary camera DestroyImmediate(go); } @MenuItem("GameObject/Render into Cubemap") static function RenderCubemap () { ScriptableWizard.DisplayWizard.<RenderCubemapWizard>( "Render cubemap", "Render!"); } }
using UnityEngine; using UnityEditor; using System.Collections;
public class RenderCubemapWizard : ScriptableWizard {
public Transform renderFromPosition; public Cubemap cubemap; void OnWizardUpdate () { string helpString = "Select transform to render from and cubemap to render into"; bool isValid = (renderFromPosition != null) && (cubemap != null); } void OnWizardCreate () { // create temporary camera for rendering GameObject go = new GameObject( "CubemapCamera"); go.AddComponent<Camera>(); // place it on the object go.transform.position = renderFromPosition.position; go.transform.rotation = Quaternion.identity; // render into cubemap go.GetComponent<Camera>().RenderToCubemap( cubemap ); // destroy temporary camera DestroyImmediate( go ); } [MenuItem("GameObject/Render into Cubemap")] static void RenderCubemap () { ScriptableWizard.DisplayWizard<RenderCubemapWizard>( "Render cubemap", "Render!"); } }
faceMask | рендера в грани кубической текстуры (cubemap). faceMask является битовым полем, указывающим на то, какие грани cubemap должны быть отрендерены. Каждый |
cubemap | The texture to render to. |
bool не отображена всей области экрана.
Рендер в cubemap с этой камеры.
Это используется для отображения отражений в режиме реального времени в cubemap отрендеренные текстуры. Это может быть довольно трудоемко,
особенно если все шесть граней cubemap отображаются в каждом кадре.
Положение камеры, флаги очистки и плоскость отсечения будет использоваться для
рендера в грани кубической текстуры (cubemap). faceMask
является битовым полем, указывающим на то, какие грани cubemap должны быть отрендерены. Каждый
бит, который соответствует грани. Номера битов являются целыми значениями перечисления CubemapFace.
По умолчанию все шесть граней cubemap будут отрендерены (значение по умолчанию 63 имеет шесть младших бит).
Эта функция вернет false
если рендеринг cubemap не удастся. Некоторое графическое аппаратное обеспечение не
подерживает данную функциональность.
Note that the RenderTexture must have isCubemap set to true. This is illustrated in the example following.
See Also: RenderTexture.isCubemap, Reflective shaders.
// Attach this script to an object that uses a Reflective shader. // Realtime reflective cubemaps!
@script ExecuteInEditMode
var cubemapSize = 128; var oneFacePerFrame = false; private var cam : Camera; private var rtex : RenderTexture;
function Start () { // render all six faces at startup UpdateCubemap( 63 ); }
function LateUpdate () { if (oneFacePerFrame) { var faceToRender = Time.frameCount % 6; var faceMask = 1 << faceToRender; UpdateCubemap (faceMask); } else { UpdateCubemap (63); // all six faces } }
function UpdateCubemap (faceMask : int) { if (!cam) { var go = new GameObject ("CubemapCamera", Camera); go.hideFlags = HideFlags.HideAndDontSave; go.transform.position = transform.position; go.transform.rotation = Quaternion.identity; cam = go.GetComponent.<Camera>();; cam.farClipPlane = 100; // don't render very far into cubemap cam.enabled = false; } if (!rtex) { rtex = new RenderTexture (cubemapSize, cubemapSize, 16); rtex.isCubemap = true; rtex.hideFlags = HideFlags.HideAndDontSave; GetComponent.<Renderer>().sharedMaterial.SetTexture ("_Cube", rtex); } cam.transform.position = transform.position; cam.RenderToCubemap (rtex, faceMask); }
function OnDisable () { DestroyImmediate (cam); DestroyImmediate (rtex); }