Unity图形学之着色器之间传递参数

embedded/2024/11/24 9:04:42/

1.初始化 struct:

UNITY_INITIALIZE_OUTPUT(type,name)

Type: struct  名字

Name :变量的名字

 struct Input{float2 uv_MainTex;float3 myColor;};half _Glossiness;half _Metallic;fixed4 _Color;void MyVertx(inout appdata_base v,out Input o){//宏定义 初始化structUNITY_INITIALIZE_OUTPUT(Input,o);o.myColor = _Color.rgb;}

2.顶点着色器 和片段着色器 的运算次数不是一个量级的,能放在顶点着色器里面运算的,尽量放在顶点里面运算

3.abs(v.naormal) : 法线取值是 -1到 1 ,所以abs是取绝对值 (0-1)

Shader "Custom/TestParameter"
{Properties{_Color ("Color", Color) = (1,1,1,1)_MainTex ("Albedo (RGB)", 2D) = "white" {}}SubShader{Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all  light types#pragma surface surf Lambert vertex:MyVertx// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input{float2 uv_MainTex;float3 myColor;};half _Glossiness;half _Metallic;fixed4 _Color;void MyVertx(inout appdata_base v,out Input o){//宏定义 初始化structUNITY_INITIALIZE_OUTPUT(Input,o);o.myColor = _Color.rgb * abs(v.normal);}void surf (Input IN, inout SurfaceOutput o){// Albedo comes from a texture tinted by colorfixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;o.Albedo = c.rgb * IN.myColor;o.Alpha = c.a;}ENDCG}FallBack "Diffuse"
}


http://www.ppmy.cn/embedded/140083.html

相关文章

Node.js笔记(三)局域网聊天室构建1

目标 用户与服务端建立通信&#xff0c;服务端能检测到用户端的连接信息 代码 JS部分<chatroom.js> const express require(express) const http require(http) const {Server} require(socket.io)const app express() const se…

WPF里面的C1FlexGrid表格控件添加RadioButton单选

如下&#xff0c;普通表单不会这么麻烦&#xff0c;我这边还根据数据控制了是否可以编辑 <c1:Column Header"评审结果" Binding"{Binding ReviewResult}" ColumnName"ReviewResult" Width"200"> <c1:Column.CellTemplate&g…

旋转向量v和旋转矩阵R

旋转向量v和旋转矩阵R 旋转向量 v 和旋转矩阵 R 是三维空间中描述旋转的两种数学表示方式。两者的关系通过 Rodrigues 公式 建立。 1. 旋转向量v 2. 旋转矩阵R 3. 旋转向量v和旋转矩阵R的关系 两者通过 Rodrigues 公式 和特殊的矩阵运算互相转换&#xff1a; 4. 代码示例 1…

React项目设置不同模式(开发development与生产production)——cross-env与env-cmd详解

在React中使用Create React App&#xff08;CRA&#xff09;构建项目时&#xff0c;可以通过以下步骤来开启生产模式&#xff1a; 一、安装Create React App&#xff08;如尚未安装&#xff09; 确保已经安装了Node.js和npm。Node.js通常自带npm包管理器。全局安装Create Rea…

iic协议

IIC&#xff08;Inter-Integrated Circuit&#xff09;协议&#xff0c;也被称为I2C协议&#xff0c;是一种由荷兰的PHILIPS公司&#xff08;现为NXP半导体公司&#xff09;开发的简单、高效的通信协议。以下是关于IIC协议的详细介绍&#xff1a; 一、IIC协议概述 定义&#…

BEV:显示相机视角转换-----FastBEV/IPM与LSS

一、背景 BEV方案中&#xff0c;将图像视角转换到BEV视角的方法对模型性能影响较大&#xff0c;FastBEV的速度较快&#xff0c;但投影效果上限不高&#xff0c;LSS投影上限较高&#xff0c;但速度较慢 &#xff08;耗时相对较高&#xff09;。是否有折中的方案&#xff0c;在耗…

设计模式-创建型-工厂模式

1.概念 由多个不同的工厂来替我们完成生产对象的操作&#xff0c;不同的工厂生产不同的对象 2.作用 不再会违背OCP原则&#xff0c;要添加新的产品类会相应添加对应的工厂类&#xff0c;不会修改到已有工厂的代码。 调用者不再关心产品的创建&#xff0c;实现职责分离 3.应…

【MATLAB源码-第221期】基于matlab的Massive-MIMO误码率随着接收天线变化仿真,对比ZF MMSE MRC三种检测算法。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 系统背景与目标 无线通信系统的发展极大地推动了现代通信技术的进步&#xff0c;从移动通信到无线局域网&#xff0c;甚至是物联网&#xff0c;均依赖于无线通信系统的高效和可靠性。在无线通信系统中&#xff0c;核心目标…