unity像素风3D场景-后处理

image.png
先创建一个C#脚本“PixelateImageEffect”,不要再Editor目录下创建C#脚本。
复制如下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExecuteInEditMode]
public class PixelateImageEffect : MonoBehaviour
{
    // Start is called before the first frame update
    public Material effectMaterial;

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, effectMaterial);
    }
}

创建一个shader文件。

复制如下代码:

Shader "Custom/Pixelate"
{
	Properties
	{
		_MainTex("Texture", 2D) = "white" {}
		_Columns("Pixel Columns",Float) = 64
		_Rows("Pixel Rows",Float) = 64

	}
		SubShader
		{
			// No culling or depth
			Cull Off ZWrite Off ZTest Always

			Pass
			{
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag

				#include "UnityCG.cginc"

				struct appdata
				{
					float4 vertex : POSITION;
					float2 uv : TEXCOORD0;
				};

				struct v2f
				{
					float2 uv : TEXCOORD0;
					float4 vertex : SV_POSITION;
				};

				v2f vert(appdata v)
				{
					v2f o;
					o.vertex = UnityObjectToClipPos(v.vertex);
					o.uv = v.uv;
					return o;
				}

				sampler2D _MainTex;
				float _Columns;
				float _Rows;

				fixed4 frag(v2f i) : SV_Target
				{
					float2 uv = i.uv;
					uv.x *= _Columns;
					uv.y *= _Rows;
					uv.x = round(uv.x);
					uv.y = round(uv.y);
					uv.x /= _Columns;
					uv.y /= _Rows;
					fixed4 col = tex2D(_MainTex, uv);
					return col;
				}
				ENDCG
			}
		}
}

然后把刚才创建的C#脚本拖入场景的摄像机,并用刚才的shader创建一个材质球拖到脚本上
image.png
这样场景就像素化了,然后场景的像素大小调整通过刚才拖入场景内的材质球的值来控制列数和行数
image.png

参考地址:

Lets Make a Pixelated Image Effect - YouTube
【unity笔记】用shader将3D场景转换为像素风格 - 知乎 (zhihu.com)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Unity3D 光圈扩散环是 Unity3D 引擎中一个常用的特效之一,用于模拟相机的光圈效果。光圈扩散环是通过改变相机的景深和光圈值来产生的。 光圈扩散环的原理是模拟真实世界中相机拍摄时光线通过镜头进入相机的过程。当光线通过一个小孔,光线会在孔后的感光面上形成一个圆形的光斑,我们称之为光圈。而当景深较浅时,光斑会因为焦距较近而变得模糊,从而产生一个扩散的效果。光圈扩散环就是通过模拟光线的传播和聚焦来实现这一效果。 在 Unity3D 中,光圈扩散环可以通过设置相机的参数来达到想要的效果。在相机的设置中,可以调整相机的焦距和光圈值。焦距决定了光线聚焦的距离,而光圈值则决定了光圈的大小。通过调整这两个参数,就可以在相机中产生不同的光圈扩散效果。 光圈扩散环可以用于多种场景中,例如模拟相机拍摄时的景深效果,增强场景的浪漫感或者梦幻感。在游戏开发中,光圈扩散环也可以用于制造特定的氛围或者强调重要的物体。利用 Unity3D 强大的渲染能力,光圈扩散环可以实现逼真的光线模拟效果,为游戏增添视觉上的吸引力。 总之,Unity3D 光圈扩散环是一种模拟相机光圈效果的特效,通过调整相机的焦距和光圈值来实现。它可以用于增强游戏场景的氛围和视觉效果,为游戏带来更好的体验。 ### 回答2: Unity3D光圈扩散环是一种特效,常用于提升游戏或虚拟现实体验的真实感。光圈扩散环效果可以模拟真实光线穿过镜头时的扩散效果。 在Unity3D中,可以使用Shader来实现光圈扩散环效果。该效果通常通过以下几个步骤实现: 1. 获取镜头位置和朝向。通过摄像机的Transform组件获取到当前摄像机的位置和朝向。 2. 计算镜头到屏幕四个角的射线。通过摄像机的ProjectionMatrix可以计算出屏幕四个角的射线,通过这些射线可以确定视角范围。 3. 射线与场景中的物体相交。使用射线与物体的碰撞检测方法(如射线投射或球形射线投射)来判断光线是否与场景中的物体相交。 4. 计算光圈扩散效果。通过计算光线与物体相交的点的位置,以及光圈半径和扩散程度等参数,可以计算出光圈的扩散效果。 5. 将光圈扩散效果应用到场景中的光源上。可以使用光源的Shader来应用光圈扩散效果,使得光源周围的物体呈现出扩散的光晕效果。 通过以上步骤,可以在Unity3D中实现光圈扩散环效果。这个效果可以增加游戏或虚拟现实体验中的真实感和视觉效果,提升用户的沉浸感和代入感。 ### 回答3: Unity3D光圈扩散环是Unity3D引擎中的一个特效功能,用于实现光圈效果。光圈效果通常将光源放置于屏幕某个位置,从该位置发散出光线,逐渐扩散和模糊。光圈扩散环就是用来模拟这种效果的组件或特效。 在Unity3D中,我们可以通过一个叫作"Image Effect"的组件来创建光圈扩散环。首先,我们需要将该组件添加到相机上。然后,我们可以调整光圈的大小、亮度和模糊程度,以及光源的位置和颜色。通过改变这些参数,我们可以实现不同类型的光圈扩散环效果,比如太阳光、灯光或火光等。 光圈扩散环的实现原理是通过对场景的后期处理进行模糊操作。这意味着我们将在相机渲染图像后的最后阶段对图像进行处理,使得图像中的亮部区域像是被光晕包围。这个效果可以通过在渲染管线的最后阶段创建一个全屏的后期处理材质实现。这个材质将使用屏幕上的像素颜色和场景中的光源设置来模拟光晕效果。 光圈扩散环不仅可以增强画面的表现力,还可以在游戏开发中用于突出重要元素或增加游戏的视觉吸引力。比如,我们可以通过在角色或物体周围创建一个光圈扩散环效果来突出显示它们在场景中的位置。另外,光圈扩散环也常用于模拟不同光源的照射效果,比如太阳光、车灯或闪电等。 总而言之,Unity3D光圈扩散环是一个用于实现光圈效果的特效功能。通过调整参数和后期处理,我们可以创建出丰富多样的光圈扩散环效果,并用于增强游戏画面的表现力和视觉吸引力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Boyce Lig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值