文章目录
最近工作忙成狗
一直没有时间充电
后续制作半透明阴影时,可以用到 dithering 来 clip shadow caster + soft shadow 来实现
所以提前搞一下 dithering tex 3d 的创建
环境
Unity : 2020.3.37f1
Pipeline : BRP
手动创建 dithering tex 3d

手动在 PS 中标记位置


// jave.lin 2022/11/02 参考:https://docs.unity3d.com/cn/2020.3/Manual/class-Texture3D.html
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class ExampleEditorScript : MonoBehaviour
{
[MenuItem("CreateExamples/3DTexture")]
static void CreateTexture3D()
{
// 配置纹理
const int width = 4, heigh = 4, depth = 16;
TextureFormat format = TextureFormat.RGBA32;
TextureWrapMode wrapMode = TextureWrapMode.Clamp;
// 创建纹理并应用配置
Texture3D texture = new Texture3D(width, heigh, depth, format, false);
texture.wrapMode = wrapMode;
// 创建 3 维数组以存储颜色数据
Color[] colors = new Color[width * heigh * depth];
const int one_depth_count = width * heigh;
Color[] depth0_cols = new Color[one_depth_count]
{
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.white, Color.white,
};
Color[] depth1_cols = new Color[one_depth_count]
{
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.white, Color.white,
Color.black, Color.white, Color.white, Color.white,
};
Color[] depth2_cols = new Color[one_depth_count]
{
Color.white, Color.white, Color.white, Color.white,
Color.white, Color.white, Color.black, Color.white,
Color.white, Color.white, Color.white, Color.white,
Color.black, Color.white, Color.white, Color.white,
};
Color[] depth3_cols = new Color[one_depth_count]
{

本文介绍如何在Unity环境中手动创建3D Dithering纹理,并通过两种不同的Shader实现纹理查看效果。首先,通过C#脚本创建了一个4x4x16的3D纹理,然后分别使用Unity内置的_DitherMaskLOD和自定义Shader实现纹理渲染。

4351

被折叠的 条评论
为什么被折叠?



