Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダーでの 3D テクスチャのサンプリング
テクスチャへのレンダリング

スクリプトによる 3D テクスチャの作成

Texture3D API を使用して、スクリプトで 3D テクスチャを作成します。

例:

// Set the texture parameters
int size = 32;
TextureFormat format = TextureFormat.RGBA32;
bool mipChain = false;

// Create a 3D texture with a width, height and depth of 32 pixels
Texture3D texture = new Texture3D(size, size, size, format, mipChain);

以下の例では、Texture3D クラスのインスタンスを作成してカラーデータを入力し、シリアル化したアセットファイルとしてプロジェクトに保存しています。

using UnityEditor;
using UnityEngine;

public class ExampleEditorScript : MonoBehaviour
{
    [MenuItem("CreateExamples/3DTexture")]
    static void CreateTexture3D()
    {
        // Set the texture parameters
        int size = 32;
        TextureFormat format = TextureFormat.RGBA32;
        TextureWrapMode wrapMode =  TextureWrapMode.Clamp;

        // Create the texture and apply the parameters
        Texture3D texture = new Texture3D(size, size, size, format, false);
        texture.wrapMode = wrapMode;

        // Create a 3-dimensional array to store color data
        Color[] colors = new Color[size * size * size];

        // Populate the array so that the x, y, and z values of the texture map to red, blue, and green colors
        float inverseResolution = 1.0f / (size - 1.0f);
        for (int z = 0; z < size; z++)
        {
            int zOffset = z * size * size;
            for (int y = 0; y < size; y++)
            {
                int yOffset = y * size;
                for (int x = 0; x < size; x++)
                {
                    colors[x + yOffset + zOffset] = new Color(x * inverseResolution,
                        y * inverseResolution, z * inverseResolution, 1.0f);
                }
            }
        }

        // Copy the color values to the texture
        texture.SetPixels(colors);

        // Apply the changes to the texture and upload the updated texture to the GPU
        texture.Apply();        

        // Save the texture to your Unity Project
        AssetDatabase.CreateAsset(texture, "Assets/Example3DTexture.asset");
    }
}
シェーダーでの 3D テクスチャのサンプリング
テクスチャへのレンダリング