Unity - 手动创建 dithering tex 3d

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


最近工作忙成狗
一直没有时间充电
后续制作半透明阴影时,可以用到 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]
        {
   
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值