首页 > 其他分享 >Unity图形学之Surface 片段着色器

Unity图形学之Surface 片段着色器

时间:2024-11-20 10:45:01浏览次数:3  
标签:surf MainTex tmpUV float 图形学 Unity pragma Input 着色器

1.结构:经常在片段着色器里做一些UV变换

#pragma surface surf Lambert finalColor:mycolor  vertex:myvert

2.Input Struct 成员变量:

(1)Uv+纹理变量的名字

        struct Input
        {
            float2 uv_MainTex;
        };

(2)还有其他的:

3.片段着色器的输出:

inout SurfaceOutput o
struct SurfaceOutput
{
    fixed3 Albedo;  // diffuse color
    fixed3 Normal;  // tangent space normal, if written
    fixed3 Emission;
    half Specular;  // specular power in 0..1 range
    fixed Gloss;    // specular intensity
    fixed Alpha;    // alpha for transparencies
};

Shader "Custom/TestFragMent"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _ScollerX ("ScollerX",float) = 1
        _ScollerY ("ScollerY",float) = 1
    }
    SubShader
    {
        // Tags { "RenderType"="Opaque" }
        // LOD 200
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all  light types
        //#pragma surface surf Standard fullforwardshadows
        #pragma surface surf Lambert
        // Use shader model 3.0 target, to get nicer looking lighting
        //#pragma target 3.0
        sampler2D _MainTex;
        struct Input
        {
            float2 uv_MainTex;
        };
        float _ScollerX;
        float _ScollerY;
        // Add instancing support for this shader. You need to check 'Enable  Instancing' on materials that use the shader.
        // See https://docs.unity3d.com/Manual/GPUInstancing.html for more  information about instancing.
        // #pragma instancing_options assumeuniformscaling
        UNITY_INSTANCING_BUFFER_START(Props)
            // put more per-instance properties here
        UNITY_INSTANCING_BUFFER_END(Props)
        void surf (Input IN, inout SurfaceOutput o)
        {
            float2 tmpUV = IN.uv_MainTex;
            tmpUV.x += _Time.x * _ScollerX;
            tmpUV.y += _Time.y * _ScollerY;
            //从_MainTex进行纹理采样
            o.Albedo = tex2D(_MainTex,tmpUV).rgb;
            
        }
        ENDCG
    }
    FallBack "Diffuse"
}

标签:surf,MainTex,tmpUV,float,图形学,Unity,pragma,Input,着色器
From: https://blog.csdn.net/woshiyuyanjia/article/details/143905416

相关文章

  • Unity新导航系统---NavMeshObstacle组件
    系列文章目录Unity新导航系统—NavMeshObstacle组件文章目录系列文章目录前言NavMeshObstacle组件前言NavMeshObstacle组件:用于在场景中定义动态障碍物,来影响导航主体(NavMeshAgent)的路径选择。这是我的学习笔记,记载的是NavMeshObstacle组件的用法和各......
  • Unity新导航系统---NavMeshAgent组件&NavMeshLink组件
    系列文章目录Unity新导航系统—NavMeshAgent组件&NavMeshLink组件文章目录系列文章目录前言NavMeshAgent组件NavMeshLink组件前言NavMeshAgent组件:用于控制游戏对象(如角色、AI等)在导航网格(NavMesh)上的移动和路径寻找。NavMeshLink组件:用于创建两个导航......
  • unity 在PICO中显示实景,虚实结合
    环境要求PICO设备型号:PICONeo3、PICO4和PICO4Ultra系列。在不同型号的设备上,视频透视画面的色调和清晰PICO设备系统版本:5.11.0及以上 必要条件:1.需禁用场景内的所有后处理能力,否则透视无法生效。2.若你在项目中使用了Vulkan和通用渲染管线(URP),则需......
  • unity 3D音 发布PICO后出现问题的解决方法
    发声物体:将AudioSource设置为2D音然后在发声物体上挂载PXR_Audio_Spatializer_AudioSource  收声物体:除了挂载AudioListener外还需要挂载PXR_Audio_Spaializer_AudioListener 此外,还可以找个合适的位置挂载一个PXR_Au......
  • 在Unity实现《Farcry5》 GPU地形
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、需求背景开放大世界渲染中,地形的渲染占比较重,包括开发投入、表现效果及性能开销等。而地形Shader部分的性能优化已经做过多版了,但Mesh的部分还......
  • 在Unity中使用Epplus写Excel
    Overview    本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用.官方的一个Demo:https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp如果你只有读的......
  • Unity实现鼠标框选功能
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassDrawRect:MonoBehaviour{publicstaticDrawRectInstance;publicDrawRect(){Instance=this;}......
  • 【Unity】ScriptableObject的应用和3D物体跟随鼠标移动:鼠标放置物体在场景中
    需求说明结合前篇,仓库管理和获取鼠标点击的世界坐标位置两篇内容,已经实现了:鼠标或键盘控制玩家移动;玩家触碰物体后,将物体放入仓库;鼠标点击仓库栏中的物体,任意放在空间中的功能。接下来想要实现:鼠标点击仓库栏的物体之后,物体会跟随鼠标移动;键盘控制待放置的......
  • PICO & Unity VR实战 经验(1)
    (1)安装团结引擎Hub和编辑器,并在添加模块窗口处,勾选AndroidSDK&NDKTools和OpenJDK。和简体中文语言包。(2)点击新建项目,未安装里面有3D(URP),点击下载并使用。注:组件要是可以更新的,这里建议你更新。(3)如何导入PICOVR的SDK到Unity教程(4)导入完成时,会弹出一个窗口——警告,......
  • unity3d————场景异步加载
    总结本文介绍了Unity中场景切换的两种方法:同步切换和异步切换。同步切换在切换场景时会删除当前场景的所有对象并加载下一个场景的信息,可能导致卡顿。因此,异步切换被引入来解决这个问题。异步切换有两种实现方式:通过事件回调函数和通过协程。通过事件回调函数实现异步加载代......