首页 > 其他分享 >Unity shader cube纹理采样

Unity shader cube纹理采样

时间:2022-12-20 10:33:27浏览次数:34  
标签:cube Point CubeMap vertex shader float4 Unity v2f 全景图

使用cube进行纹理采样,可以很方便的预览全景图,可以用立方体去显示全景图,而不必非得用球

甚至还可以用更复杂的网格去贴全景图,只要保证网格的形状和全景图里的内容能对应上就行,比如激光扫的房间的模型,可以直接贴房间的全景图

代码很简单,其中_Point是拍摄全景图的点位,可以先见个Cube,然后挂上这个shader,修改_Point看看效果,很容易理解的,(需要将Cube的缩放改大点,如(200,200,200)太小可能有畸变)

Shader "Unlit/SimpleCube"
{
    Properties
    {
        _CubeMap("CubeMap", CUBE) = "" {}
        _Point("Point",VECTOR) = (0,0,0,0)
    }
        SubShader
        {
            Tags { "Queue" = "Transparent" "RenderType" = "Transparent" }
            Blend SrcAlpha OneMinusSrcAlpha
            LOD 100
            Cull Off

            Pass
            {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                #include "UnityCG.cginc"

                struct appdata
                {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                };

                struct v2f
                {
                    float4 vertex : SV_POSITION;
                    float4 vertexLocal : TEXCOORD1;
                };
                samplerCUBE _CubeMap;
                float4 _Point;
                v2f vert(appdata v)
                {
                    v2f o;
                    o.vertex = UnityObjectToClipPos(v.vertex);
                    o.vertexLocal = v.vertex;
                    return o;
                }

                fixed4 frag(v2f i) : SV_Target
                {
                    fixed4 col = texCUBE(_CubeMap, normalize(mul(UNITY_MATRIX_M,i.vertexLocal.xyz) - mul(UNITY_MATRIX_M,_Point.xyz)));
                    return col;
                }
                ENDCG
            }
        }
}

  

 

标签:cube,Point,CubeMap,vertex,shader,float4,Unity,v2f,全景图
From: https://www.cnblogs.com/Jason-c/p/16993680.html

相关文章

  • Unity判断线和平面的交点
    //线和平面的交点privateVector3GetIntersectWithLineAndPlane(Vector3point,Vector3direct,Vector3planeNormal,Vector3planePoint){float......
  • How to mute all audio sound in unity? Unity中怎么样关闭所有音效
    AudioListener.pause=true;//orAudioListener.volume=0;Ref:https://answers.unity.com/questions/52109/how-do-i-mute-all-audio-sound.html......
  • Unity实现无缝大世界--地形
    大世界最重要的毫无疑问是地形了,地形也是一项比较古老,且一直在迭代更新的图形学技术。地形系统主体技术要点,一般围绕着LOD来展开。最近一些年,随着DrawInstance和GPUPipeli......
  • Unity获取手机本地应用以及调起apk安装、启动app、安装完成回调
    1、获取手机本地应用。创建AppInfo类和AppUtils类,用于接收获取到的应用列表。Android层代码AppInfo:publicclassAppInfo{privateDrawableimage;private......
  • Unity中实现AnimatorController
    前言:我们无法监听Animator是否播放完一个动画,我所知的办法就是将监听方法设置为Public,并且挂在带有Animator的物体上,并且还要在Clip文件内新增AnimEvent。于是我自己写了一......
  • CubeMX+FreeRTOS点灯
    一、CubeMX配置 1、选择时钟源,选择TIM1,网上推荐freertos使用除systick以外的timebase,网上找到的原因是防止高于systick优先级的服务调用HAL_Delay(),导致服务无法返回。......
  • unity 局域网内传送照片
    发送的电脑usingUnityEngine;usingSystem.Collections;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.IO;usingSystem;publicclassSendPhoto:Mon......
  • CommunityToolkit.Mvvm
    publicclassViewModel:ObservableObject{publicViewModel(){ShowCommand=newRelayCommand<string>(Show);}......
  • .NetCore【工作应用】Unity
    UnityUnity是一个IoC容器,用来实现依赖注入(DependencyInjection,DI),减少耦合Unity安装install-packageUnity使用IUnityContainercontainer=newUnity......
  • 【Unity Shader】Special Effects(二)BorderFlow 边框流动(UI)
    更新日期:2021年8月23日。Github源码:​​​[点我获取源码]​​索引​​BorderFlow边框流动​​​​思路分析​​​​流光区域​​​​流光区域的中心点​​​​流光区域的......