当前位置: 首页 > news >正文

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

目录

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

1. 快捷键Ctrl+G完成和UE蓝图使用快捷键C一样的蓝图分组注释效果:

2. Tiling And Offset:

3. 以下是两组URP材质渲染的效果对比:

4.  打开Frame Debugger

5. 三种Shader编程语言:

基于OpenGL的OpenGL Shading Language,缩写GLSL;

基于DirectX的High Level Shading Language,缩写HLSL;

基于NVIDIA的C for Graphic,缩写CG;

着色器渲染管线兼容性(重点就是URP、HDRP支持HLSL语言,不支持CG语言,URP项目的渲染选择最好就是HLSL):

 VS Studio-ShaderlabVS插件 

6. 贴段HLSL代码:


1. 快捷键Ctrl+G完成和UE蓝图使用快捷键C一样的蓝图分组注释效果:

2. Tiling And Offset:

 

3. 以下是两组URP材质渲染的效果对比:

左边为:unlit URP,右边为lit URP;

无光照的渲染更加均匀一致,光照渲染更加真实,可以增加修改的预设参数也更多。

4.  打开Frame Debugger

5. 三种Shader编程语言:

  • 基于OpenGL的OpenGL Shading Language,缩写GLSL;
  • 基于DirectX的High Level Shading Language,缩写HLSL;
  • 基于NVIDIA的C for Graphic,缩写CG;
  • 着色器渲染管线兼容性(重点就是URP、HDRP支持HLSL语言,不支持CG语言,URP项目的渲染选择最好就是HLSL):

 

  •  VS Studio-ShaderlabVS插件 

6. 贴段HLSL代码:

// 当前Shader在材质面板下拉列表的路径和名字
Shader "Unlit/NewUnlitShader"
{Properties{//变量名(显示名称,类型) = 默认值_MainTex ("Texture", 2D) = "white" {}_MainTexArr("TextureArr", 2DArray) = "white" {}_Color("Color", Color) = (1,1,1,1)_Int("Int",Int) = 2                     //整形_Float("Float",float) = 1.5             //浮点型_Range("Range",range(0.0,2.0)) = 1.0    //范围值       _Vector("Vector",Vector) = (1,4,3,8)    //向量//_MainTex("Texture", 2D) = "white" {}    //贴图//_Color("Color",Color) = (1,1,1,1)       //颜色_Cube("Cube",Cube) = "white"{}          //天空盒_CubeArray("CubeArray",CubeArray) = "white"{}          _3D("3D",3D) = "black"{}                //3D贴图       }SubShader{Tags { "RenderType" = "Opaque"}//"Queue" = "Transparent"         //渲染顺序//"RenderType" = "Opaque"         //着色器替换功能//"DisableBatching" = "True"      //是否进行合批//"ForceNoShadowCasting" = "True" //是否投射阴影//"IgnoreProjector" = "True"      //受不受Projector的影响,通常用于透明物体//"CanUseSpriteAltas" = "False"   //是否用于图片的Shader,通常用于UI//"PreviewType" = "Plane"         //用作shader面板预览的类型LOD 100Pass{//Name "ExamplePassName"//Tags { //    "ExampleTagKey" = "ExampleTagValue" //}此处是 ShaderLab 命令。此处是 HLSL 代码。HLSLPROGRAM#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"#pragma vertex vert#pragma fragment fragstruct Attributes{float4 positionOS : POSITION;float2 uv : TEXCOORD0;};struct Varyings{float4 positionCS : SV_POSITION;float2 uv : TEXCOORD0;};float4 _Color;sampler2D _MainTex;float4 _MainTex_ST;Varyings vert(Attributes v){Varyings o = (Varyings)0;VertexPositionInputs vertexInput = GetVertexPositionInputs(v.positionOS.xyz);o.positionCS = vertexInput.positionCS;o.uv = TRANSFORM_TEX(v.uv, _MainTex);return o;}half4 frag(Varyings i) : SV_Target{half4 col = tex2D(_MainTex, i.uv);return lerp(col, _Color, 0.8);}ENDHLSL}}    Fallback "Custom/NewSurfaceShader"}

 继续!!

相关文章:

  • kafka和ZK的关系
  • Apache Camel定时任务
  • 跳槽前应该做好哪些准备?
  • Redis 缓存(Cache)
  • 全栈笔记_工具篇(nvm免安装版自动配置,无需手动设置环境变量)
  • 基于Java的宠物领养管理网站系统设计与实现
  • HarmonyOS—使用低代码开发应用或服务
  • 基于springboot+vue的智能推荐的卫生健康系统(前后端分离)
  • Linux设备模型(二) - kset/kobj/ktype APIs
  • RAW 编程接口 TCP 简介
  • Microsoft的PromptBench可以做啥?
  • 【无标题】旋转链表与力扣报错:member access within null pointer of type ‘struct ListNode‘
  • go build
  • 基于SpringBoot的在线拍卖系统设计与实现(源码+调试+LW+PPT)
  • (2.2w字)前端单元测试之Jest详解篇
  • [数据结构]链表的实现在PHP中
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Hibernate【inverse和cascade属性】知识要点
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Just for fun——迅速写完快速排序
  • maven工程打包jar以及java jar命令的classpath使用
  • Python爬虫--- 1.3 BS4库的解析器
  • REST架构的思考
  • vue脚手架vue-cli
  • Web设计流程优化:网页效果图设计新思路
  • 闭包,sync使用细节
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 开源SQL-on-Hadoop系统一览
  • 漂亮刷新控件-iOS
  • 前端存储 - localStorage
  • 学习HTTP相关知识笔记
  • 最简单的无缝轮播
  • AI算硅基生命吗,为什么?
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 如何在招聘中考核.NET架构师
  • 整理一些计算机基础知识!
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (2020)Java后端开发----(面试题和笔试题)
  • (26)4.7 字符函数和字符串函数
  • (3)llvm ir转换过程
  • (4)STL算法之比较
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .Net CF下精确的计时器
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET上SQLite的连接
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @staticmethod和@classmethod的作用与区别
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [Angular 基础] - 自定义指令,深入学习 directive