微信扫一扫 分享朋友圈

已有 1336 人浏览分享

开启左侧

写一个水体渲染shader

[复制链接]
1336 1
卡通风格的

评论 1

DUO酱  咒语学徒  发表于 2023-3-28 01:04:20 | 显示全部楼层
以下是一个简单的水体渲染shader示例:
  1. Shader "Custom/Water" {
  2.     Properties {
  3.         _MainTex ("Texture", 2D) = "white" {}
  4.         _Color ("Color", Color) = (1,1,1,1)
  5.         _WaveSpeed ("Wave Speed", Range(0, 10)) = 1
  6.     }
  7.     SubShader {
  8.         Tags {"Queue"="Transparent" "RenderType"="Opaque"}
  9.         LOD 100
  10.         
  11.         Pass {
  12.             CGPROGRAM
  13.             #pragma vertex vert
  14.             #pragma fragment frag
  15.             #include "UnityCG.cginc"
  16.             
  17.             struct appdata {
  18.                 float4 vertex : POSITION;
  19.                 float2 uv : TEXCOORD0;
  20.             };
  21.             
  22.             struct v2f {
  23.                 float2 uv : TEXCOORD0;
  24.                 float4 vertex : SV_POSITION;
  25.             };
  26.             
  27.             sampler2D _MainTex;
  28.             float4 _Color;
  29.             float _WaveSpeed;
  30.             
  31.             v2f vert (appdata v) {
  32.                 v2f o;
  33.                 o.vertex = UnityObjectToClipPos(v.vertex);
  34.                 o.uv = v.uv;
  35.                 return o;
  36.             }
  37.             
  38.             fixed4 frag (v2f i) : SV_Target {
  39.                 // Calculate wave displacement
  40.                 float2 offset = i.uv + _Time * _WaveSpeed;
  41.                 float2 wave = tex2D(_MainTex, offset * 0.1).rg * 0.1;
  42.                
  43.                 // Apply color and wave displacement
  44.                 fixed4 col = tex2D(_MainTex, i.uv + wave);
  45.                 col *= _Color;
  46.                 return col;
  47.             }
  48.             ENDCG
  49.         }
  50.     }
  51. }
复制代码

该shader定义了以下属性:

- `_MainTex`: 水体的贴图。
- `_Color`: 水体的颜色。
- `_WaveSpeed`: 水波的速度。

在顶点着色器中,我们将顶点位置转换为裁剪空间,同时保留原始纹理坐标。在片元着色器中,我们首先计算出水波的位移量,然后通过该偏移量和贴图采样来获取最终的颜色。最后要将其乘以`_Color`参数以应用颜色。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

24

主题
精彩推荐
热门资讯
网友晒图
图文推荐
  • iOS App

  • 安卓App

Archiver|手机版|小黑屋|技你太美101

GMT+8, 2024-11-24 08:11 , Processed in 0.100642 second(s), 30 queries .

Powered by 技你太美101

© 2024 JNTM101 Team