shader
文章平均质量分 67
小pig饲养员
为了独立游戏正在努力积攒经济基础的程序员。
展开
-
Unity shader实现水波效果
先放效果只想要代码可以直接拉到3.0原理把波产生的点作为圆形,往外的半径方向作为变量,通过波的公式来偏移uv取值,从而模拟波。1.0一个从平面中心不断波动的效果ps:不是后处理,直接作为material赋给平面使用,为了防止波变成椭圆,需要在变量中更新平面的长宽比。Shader "MyShader/waterWave"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Strength(原创 2022-03-29 17:16:50 · 5935 阅读 · 7 评论 -
Re:《Unity Shader入门精要》13.3全局雾效--如何从深度纹理重构世界坐标
空间还原游戏特效,后处理是必不可少的,而后处理经常需要我们得到当前画面的像素对应世界空间的所有信息。思路通过深度纹理取得NDC坐标,然后再通过NDC坐标还原成世界空间坐标//csharp脚本部分Matrix4x4 matrix = camera.projectionMatrix * camera * worldToCameraMatrix;Matrix4x4 InverseMatrix = matrix.inverse;//shader部分float d = SAMPLE_DEPTH_原创 2022-03-17 23:29:47 · 4360 阅读 · 16 评论 -
《Unity shader入门精要》复习<第13章 关于NDC坐标和深度/法线纹理>
分为三个地方讲解。NDC(Normalize Device Coordinates)归一化的设备坐标NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标。只需要再一步变换就能得到屏幕空间坐标。顺便提一下因为已经归一化了,如果需要从NDC坐标还原成世界坐标,需要注意最后除w分量。何为线性何为非线性正交投影得到的深度是线性的,而透视投影得到深度是非线性的。所谓线性,就是指变化曲线的一阶导数为常量,也就是说变化量是恒定的。既然变换是恒定的,那么即深度z的采样点在[-1,]1之间均匀分布。正原创 2022-03-08 23:33:07 · 7237 阅读 · 4 评论 -
《shader入门精要》13.2再谈运动模糊中片元着色器的世界坐标的计算
具体在书p275页这里为啥需要除D.w呢。首先我们得到的NDC的坐标是已经归一化的,但是CurrenViewProjectionInverseMatrix的作用,是把世界空间转化为尚未归一化的裁剪空间的矩阵。这里书上有说明。查找Unity的函数我们就能知道变换得到的顶点坐标是没有归一化的Camera.projectionMatrix. static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, fl原创 2022-01-16 00:57:15 · 2345 阅读 · 1 评论 -
《Shader入门精要》第11章-11.3.1流动的河流中的offset.x的解释
在我学习入门精要的时候,经常遇到不解释api,甚至是关键代码的实现原理。11.3.1流动的河流中的offset.x的sin函数查了一下好像大家也都是书上原话直接复制,现在好不容易想明白了希望能帮到和我一样一脸懵逼的人。// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unity Shaders Book/Chapter 11/Water" { Properties {原创 2022-01-09 01:14:17 · 2211 阅读 · 1 评论