unity shader 屏幕后处理

各位老师好,有个关于shader的问题想请教下,我弄了一个屏幕后处理的特效,在onRenderimage里调用graphics.bilt(src,dest,mat)为整个屏幕内物体描边,mat是带上描边shader的材质球 。现在想为另外一个单独物体进行描边(就是想让这个物体单独运行一次描边shader),我查询了好久,好像graphics.drawmesh可以达到这种效果,但是不知道具体操作,求指教

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
unity shader关于语义

请问unity shader中有texcoordn语义,这n组纹理坐标有什么区别,还有colorn

unity shader 限制贴图显示

这几天在学shader的时候,想到一个问题,我有两张纹理图,一张是主纹理(1024*512),一张是局部纹理(256*128),局部纹理在主纹理的中心, 我已经将它们混合了,但发现了一个问题,由于局部纹理太小,导致它会被拉伸,我想到一个解决方案就是将局部纹理分辨率设置成主纹理一样的分辨率, 多余的设置成透明后混合,也可以达到效果。但我不想放弃另一种思路,就是直接将纹理混合,在shader 中限制其显示区域,奈何能力不够,网上也找不到类似 资料,只能来这试试![图片说明](https://img-ask.csdn.net/upload/201803/05/1520218412_400185.png)

unity shader 向量乘法问题

#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw) tex.xy等价于float2(x,y),那么tex.xy * name##_ST.xy 应该是一个标量才对,而这里两个相乘应该是一个二维向量。在swizzle操作中的乘法和float的点乘是不一样的吗?

UnityShader中下面的uv怎么计算的?

问题一: 下面两个箭头处分别是怎么计算的呢?(求过程) ![图片说明](https://img-ask.csdn.net/upload/201810/25/1540429385_392378.png) ![图片说明](https://img-ask.csdn.net/upload/201810/25/1540431320_804446.jpg)

unity shader实现的水流效果在安卓上变成块状方片在流动,PC和IOS正常

在手机端的会随着时间的增长水流效果变的模糊 手机配置很低会立刻模糊 手机配置越高变模糊需要的时间越长 这是电脑的正常效果 ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553580542_323567.jpg) 这是手机上不正常的效果 测试机是目前主流8核128G手机 ![图片说明](https://img-ask.csdn.net/upload/201903/26/1553580681_733001.jpg) 由于保密性我就只能截图一部分 下面是shader代码 ``` // Toony Colors Pro+Mobile 2 // (c) 2014-2017 Jean Moreno Shader "Toony Colors Pro 2/Examples/Water/Reflection" { Properties { [TCP2HelpBox(Warning,Make sure that the Camera renders the depth texture for this material to work properly. You can use the script __TCP2_CameraDepth__ for this.)] [TCP2HeaderHelp(BASE, Base Properties)] //TOONY COLORS _HColor ("Highlight Color", Color) = (0.6,0.6,0.6,1.0) _SColor ("Shadow Color", Color) = (0.3,0.3,0.3,1.0) //DIFFUSE _MainTex ("Main Texture (RGB)", 2D) = "white" {} [TCP2Separator] //TOONY COLORS RAMP _RampThreshold ("Ramp Threshold", Range(0,1)) = 0.5 _RampSmooth ("Ramp Smoothing", Range(0.001,1)) = 0.1 [TCP2Separator] [TCP2HeaderHelp(WATER)] _Color ("Water Color", Color) = (0.5,0.5,0.5,1.0) [Header(Foam)] _FoamSpread ("Foam Spread", Range(0.01,5)) = 2 _FoamStrength ("Foam Strength", Range(0.01,1)) = 0.8 _FoamColor ("Foam Color (RGB) Opacity (A)", Color) = (0.9,0.9,0.9,1.0) [NoScaleOffset] _FoamTex ("Foam (RGB)", 2D) = "white" {} _FoamSmooth ("Foam Smoothness", Range(0,0.5)) = 0.02 _FoamSpeed ("Foam Speed", Vector) = (2,2,2,2) [Header(Waves Normal Map)] [TCP2HelpBox(Info,There are two normal maps blended. The tiling offsets affect each map uniformly.)] _BumpMap ("Normal Map", 2D) = "bump" {} [PowerSlider(2.0)] _BumpScale ("Normal Scale", Range(0.01,2)) = 1.0 _BumpSpeed ("Normal Speed", Vector) = (0.2,0.2,0.3,0.3) _NormalDepthInfluence ("Depth/Reflection Influence", Range(0,1)) = 0.5 [TCP2Separator] [TCP2HeaderHelp(SPECULAR, Specular)] //SPECULAR _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1) _Shininess ("Roughness", Range(0.0,10)) = 0.1 [TCP2Separator] [TCP2HeaderHelp(REFLECTION, Reflection)] //REFLECTION _ReflStrength ("Reflection Strength", Range(0,1)) = 1 [HideInInspector] _ReflectionTex ("Planar Reflection RenderTexture", 2D) = "white" {} [TCP2Separator] [TCP2HeaderHelp(RIM, Rim)] //RIM LIGHT _RimColor ("Rim Color", Color) = (0.8,0.8,0.8,0.6) _RimMin ("Rim Min", Range(0,1)) = 0.5 _RimMax ("Rim Max", Range(0,1)) = 1.0 [TCP2Separator] //Avoid compile error if the properties are ending with a drawer [HideInInspector] __dummy__ ("unused", Float) = 0 } SubShader { Tags {"Queue"="Geometry" "RenderType"="Opaque"} CGPROGRAM #pragma surface surf ToonyColorsWater keepalpha vertex:vert nolightmap #pragma target 3.0 //================================================================ // VARIABLES fixed4 _Color; sampler2D _MainTex; float4 _MainTex_ST; sampler2D _BumpMap; float4 _BumpMap_ST; half _BumpScale; half4 _BumpSpeed; half _NormalDepthInfluence; sampler2D_float _CameraDepthTexture; half4 _FoamSpeed; half _FoamSpread; half _FoamStrength; sampler2D _FoamTex; fixed4 _FoamColor; half _FoamSmooth; fixed4 _RimColor; fixed _RimMin; fixed _RimMax; half _ReflStrength; sampler2D _ReflectionTex; struct Input { half2 texcoord; half2 bump_texcoord; half3 viewDir; float4 sPos; }; //================================================================ // CUSTOM LIGHTING //Lighting-related variables half4 _HColor; half4 _SColor; half _RampThreshold; half _RampSmooth; fixed _Shininess; //Custom SurfaceOutput struct SurfaceOutputWater { half atten; fixed3 Albedo; fixed3 Normal; fixed3 Emission; half Specular; fixed Gloss; fixed Alpha; }; inline half4 LightingToonyColorsWater (inout SurfaceOutputWater s, half3 viewDir, UnityGI gi) { half3 lightDir = gi.light.dir; #if defined(UNITY_PASS_FORWARDBASE) half3 lightColor = _LightColor0.rgb; half atten = s.atten; #else half3 lightColor = gi.light.color.rgb; half atten = 1; #endif s.Normal = normalize(s.Normal); fixed ndl = max(0, dot(s.Normal, lightDir)); #define NDL ndl #define RAMP_THRESHOLD _RampThreshold #define RAMP_SMOOTH _RampSmooth fixed3 ramp = smoothstep(RAMP_THRESHOLD - RAMP_SMOOTH*0.5, RAMP_THRESHOLD + RAMP_SMOOTH*0.5, NDL); #if !(POINT) && !(SPOT) ramp *= atten; #endif #if !defined(UNITY_PASS_FORWARDBASE) _SColor = fixed4(0,0,0,1); #endif _SColor = lerp(_HColor, _SColor, _SColor.a); //Shadows intensity through alpha ramp = lerp(_SColor.rgb, _HColor.rgb, ramp); fixed4 c; c.rgb = s.Albedo * lightColor.rgb * ramp; c.a = s.Alpha; //Specular half3 h = normalize(lightDir + viewDir); float ndh = max(0, dot (s.Normal, h)); float spec = pow(ndh, s.Specular*128.0) * s.Gloss * 2.0; spec *= atten; c.rgb += lightColor.rgb * _SpecColor.rgb * spec; #ifdef UNITY_LIGHT_FUNCTION_APPLY_INDIRECT c.rgb += s.Albedo * gi.indirect.diffuse; #endif return c; } void LightingToonyColorsWater_GI(inout SurfaceOutputWater s, UnityGIInput data, inout UnityGI gi) { gi = UnityGlobalIllumination(data, 1.0, s.Normal); gi.light.color = _LightColor0.rgb; //remove attenuation s.atten = data.atten; //transfer attenuation to lighting function } //================================================================ // VERTEX FUNCTION struct appdata_tcp2 { float4 vertex : POSITION; float3 normal : NORMAL; float4 texcoord : TEXCOORD0; float4 texcoord1 : TEXCOORD1; float4 texcoord2 : TEXCOORD2; float4 tangent : TANGENT; }; #define TIME (_Time.y) void vert(inout appdata_tcp2 v, out Input o) { UNITY_INITIALIZE_OUTPUT(Input, o); //Main texture UVs float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; half2 mainTexcoords = worldPos.xz * 0.1; o.texcoord.xy = TRANSFORM_TEX(mainTexcoords.xy, _MainTex); o.bump_texcoord = mainTexcoords.xy + TIME.xx * _BumpSpeed.xy * 0.1; float4 pos = UnityObjectToClipPos(v.vertex); o.sPos = ComputeScreenPos(pos); COMPUTE_EYEDEPTH(o.sPos.z); } //================================================================ // SURFACE FUNCTION void surf(Input IN, inout SurfaceOutputWater o) { half3 normal = UnpackScaleNormal(tex2D(_BumpMap, IN.bump_texcoord.xy * _BumpMap_ST.xx), _BumpScale).rgb; half3 normal2 = UnpackScaleNormal(tex2D(_BumpMap, IN.bump_texcoord.xy * _BumpMap_ST.yy + TIME.xx * _BumpSpeed.zw * 0.1), _BumpScale).rgb; normal = (normal+normal2)/2; o.Normal = normal; IN.sPos.xy += normal.rg * _NormalDepthInfluence; half ndv = dot(IN.viewDir, normal); fixed4 mainTex = tex2D(_MainTex, IN.texcoord.xy); float sceneZ = SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(IN.sPos)); if(unity_OrthoParams.w > 0) { //orthographic camera #if defined(UNITY_REVERSED_Z) sceneZ = 1.0f - sceneZ; #endif sceneZ = (sceneZ * _ProjectionParams.z) + _ProjectionParams.y; } else //perspective camera sceneZ = LinearEyeDepth(sceneZ); float partZ = IN.sPos.z; float depthDiff = (sceneZ - partZ); //Depth-based foam half2 foamUV = IN.texcoord.xy; foamUV.xy += TIME.xx*_FoamSpeed.xy*0.05; fixed4 foam = tex2D(_FoamTex, foamUV); foamUV.xy += TIME.xx*_FoamSpeed.zw*0.05; fixed4 foam2 = tex2D(_FoamTex, foamUV); foam = (foam + foam2) / 2; float foamDepth = saturate(_FoamSpread * depthDiff); half foamTerm = (smoothstep(foam.r - _FoamSmooth, foam.r + _FoamSmooth, saturate(_FoamStrength - foamDepth)) * saturate(1 - foamDepth)) * _FoamColor.a; o.Albedo = lerp(mainTex.rgb * _Color.rgb, _FoamColor.rgb, foamTerm); o.Alpha = mainTex.a * _Color.a; o.Alpha = lerp(o.Alpha, _FoamColor.a, foamTerm); //Specular o.Gloss = 1; o.Specular = _Shininess; //Rim half3 rim = smoothstep(_RimMax, _RimMin, 1-Pow4(1-ndv)) * _RimColor.rgb * _RimColor.a; o.Emission += rim.rgb; fixed4 reflColor = tex2Dproj(_ReflectionTex, UNITY_PROJ_COORD(IN.sPos)); o.Emission += reflColor.rgb * _ReflStrength; } ENDCG } //Fallback "Diffuse" CustomEditor "TCP2_MaterialInspector_SG" } ```

unity shader graph如何预览动态效果

每次都需要启动游戏才能看到效果太费时间了,有没有方法不启动游戏看到动态效果。。。

unity shader graph节点预览一片黑

![图片说明](https://img-ask.csdn.net/upload/201911/03/1572711119_127134.png) 如图,本该出现一个预览的,怎么调都调不出来,有大佬知道原因吗?

Unity Shader Graph在普通的3D项目中不能使用吗?

我只知道在创建项目的时候创建lightweight项目的话,可以使用shader graph。 可以在3D项目中使用shader graph吗? 网上教程是使用package下载lightweight和shader graph,但是在3D项目中的package根本搜索不到这两个包。 请问3D项目到底能不能使用shader graph?

Unity3d 图片添加shader,透明部分被覆盖,请问shader哪写错了

Unity3d 图片添加shader,透明部分被覆盖,请问shader哪写错了

unity ComputeShader里结构体变量初始化如何不用分支判断

unity ComputeShader里结构体变量初始化如何不用分支判断 init 是一个int 类型 在跑完第一帧之后会被设置成其他值 现在想求助各位大神 如何在不使用标志位的情况下初始化这个结构体里的成员变量 dataBuffer[f].pos = pos; dataBuffer[f].velocity = float3(0, 0, 0); (补充说明:如果没有这个if分支初始化变量会导致不显示,直接初始化没有标志位分支表现结果和预期不符) ``` // Each #kernel tells which function to compile; you can have many kernels #pragma kernel CSMain // Create a RenderTexture with enableRandomWrite flag and set it // with cs.SetTexture RWTexture2D<float4> Result; float3 mousePos; float3 originPos; float deltaTime; int init; float radius; struct Data { float3 pos; float3 velocity; float3 uv; }; RWStructuredBuffer<Data> dataBuffer; //[numthreads(32, 32, 1)] [numthreads(32, 32, 1)] void CSMain(uint3 id : SV_DispatchThreadID) { // TODO: insert actual code here! //id.x 第X列的线程ID //id.y 第Y行的线程ID uint f = id.x + id.y * 32 * 64; // uint f = id.x + id.y * 32 * 64; float3 pos = float3(id.x, id.y, id.z) / 2 + originPos; //计算出原始坐标 dataBuffer[f].uv = ((pos - originPos) / 2048) * 2; //计算出每个点的uv //dataBuffer[f].uv = ((pos - originPos) / 2048) * 2; //计算出每个点的uv if (init == 0)//初始化点 { dataBuffer[f].pos = pos; dataBuffer[f].velocity = float3(0, 0, 0); }else { float3 dis = dataBuffer[f].pos - mousePos; //计算出当前坐标与鼠标点间的向量 float vel = clamp(radius - length(dis), 0.01, radius) * deltaTime * 20; //计算出力 dataBuffer[f].velocity += normalize(dis) * vel; //加上力 dataBuffer[f].velocity = normalize(dataBuffer[f].velocity) * clamp((length(dataBuffer[f].velocity) - deltaTime * 2), 0, radius); //限制力的范围,并且加上指向原始点的力 dataBuffer[f].pos = pos + dataBuffer[f].velocity; //根据力计算出坐标 } } ```

Unity shader 根据网格顶点的高低 改变UV方向

shader里面怎么计算顶点~来改变uv的方向?有没有大佬教一下!水往低处流的效果!没C币 有红包~

UnityShader中下面的uv怎么计算?

红色框里计算的是两点之间的模长,即求两点间的距离。但是tmpUV并不是一个点呀。 怎么回事呢? ![图片说明](https://img-ask.csdn.net/upload/201810/29/1540795170_310243.png)

unity3d中加入shader后材质球的颜色变为黑色的问题

我想在unity中给cube添加轮廓线,从某个帖子中得知shader可以实现,还给了一段shader的代码,但是只要给材质球挂载上这个shader,轮廓是有了,但是材质球会变成黑色。麻烦各位大神给看看,是不是这个shader哪里写的有问题 ``` Shader "Custom/NewSurfaceShader" { Properties { //定义材质的颜色为白色 _Color ("Main Color", Color) = (1,1,1,1) //定义材质的轮廓线为黑色 _OutlineColor ("Outline Color", Color) = (0,0,0,1) //改变这个能改变轮廓边的颜色 //定义线宽 _Outline ("Outline width", Range (0.0, 0.03)) = 0.001 //改变这个能改变轮廓边的粗细 _MainTex ("Base (RGB)", 2D) = "white" { } } CGINCLUDE #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 pos : POSITION; float4 color : COLOR; }; uniform float _Outline; uniform float4 _OutlineColor; v2f vert(appdata v) { // just make a copy of incoming vertex data but scaled according to normal direction v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); float2 offset = TransformViewToProjection(norm.xy); o.pos.xy += offset * o.pos.z * _Outline; o.color = _OutlineColor; return o; } ENDCG SubShader { Tags { "Queue" = "Transparent" } // note that a vertex shader is specified here but its using the one above Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Off ZWrite Off ZTest Always ColorMask RGB // alpha not used // you can choose what kind of blending mode you want for the outline Blend SrcAlpha OneMinusSrcAlpha // Normal //Blend One One // Additive //Blend One OneMinusDstColor // Soft Additive //Blend DstColor Zero // Multiplicative //Blend DstColor SrcColor // 2x Multiplicative CGPROGRAM #pragma vertex vert #pragma fragment frag half4 frag(v2f i) :COLOR { return i.color; } ENDCG } Pass { Name "BASE" ZWrite On ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] Ambient [_Color] } Lighting On SetTexture [_MainTex] { ConstantColor [_Color] Combine texture * constant } SetTexture [_MainTex] { Combine previous * primary DOUBLE } } } SubShader { Tags { "Queue" = "Transparent" } Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Front ZWrite Off ZTest Always ColorMask RGB // you can choose what kind of blending mode you want for the outline Blend SrcAlpha OneMinusSrcAlpha // Normal //Blend One One // Additive //Blend One OneMinusDstColor // Soft Additive //Blend DstColor Zero // Multiplicative //Blend DstColor SrcColor // 2x Multiplicative CGPROGRAM #pragma vertex vert #pragma exclude_renderers gles xbox360 ps3 ENDCG SetTexture [_MainTex] { combine primary } } Pass { Name "BASE" ZWrite On ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] Ambient [_Color] } Lighting On SetTexture [_MainTex] { ConstantColor [_Color] Combine texture * constant } SetTexture [_MainTex] { Combine previous * primary DOUBLE } } } Fallback "Diffuse" } ``` ![图片说明](https://img-ask.csdn.net/upload/201610/26/1477449766_40855.png)

cocos2d-x能直接使用Unity 2D的shader文件吗

如果不行Unity的shader文件能不能转成opengl 的FSH和VSH格式的文件?

unity模型. shader. 3dMAX

unity导入的房屋模型不真实. ,怎么才能做到让其变得更真实呢??是不是害得需要学会unity中的shader呢??求大神指点

海水shader问题,渐变效果出不来, 手机和PC上效果不同

这是我shader ``` Shader "Custom/SeaSimple_1" { Properties { _Color0("Water Color",Color) = (1,1,1,1)//水的颜色 _Color1("Water Depth",Color) = (0,0,0,0)//水的深度的颜色 _Alpha("Alpha",Range( 0,1))= 1//水面的正题透明度 _ColorDepth("ColorDepth",Range( 0,1))= 0//水的深度 } SubShader { Tags {"RenderType"="Transparent" "Queue"="Transparent"} zwrite off Pass { Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct VertexOutput { float2 uv : TEXCOORD0; float4 pos : SV_POSITION; float4 scrPos : TEXCOORD1; }; float4 _Color0; float4 _Color1; float _Alpha;//水的透明度 float _ColorDepth; sampler2D _CameraDepthTexture; VertexOutput vert (appdata v) { VertexOutput o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.scrPos = ComputeScreenPos(o.pos);//将返回片段着色器的屏幕位置 COMPUTE_EYEDEPTH(o.scrPos.z);//计算顶点摄像机空间的深度:距离裁剪平面的距离 return o; } fixed4 frag (VertexOutput i) : COLOR { //计算当前像素深度 float depth= tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.scrPos)).r;//UNITY_PROJ_COORD:深度值 [0,1] depth = LinearEyeDepth(depth);//深度根据相机的裁剪范围的值[0.3,1000],是将经过透视投影变换的深度值还原了 depth -= i.scrPos.z; //计算水的透明度: 使用深度值 float alpha = saturate( _Alpha*depth); //计算颜色深度: float colDepth = saturate(_ColorDepth*depth); colDepth = 1-colDepth; colDepth = lerp(colDepth, colDepth*colDepth*colDepth, 0.5);//调整深度,看个人喜好 half3 col; col.rgb = lerp(_Color0.rgb, _Color1.rgb, colDepth); return float4(col.rgb, alpha ); } ENDCG } } } ``` 这是电脑上效果 ,目前安卓也可以了,就iphone不行 ![图片说明](https://img-ask.csdn.net/upload/201607/08/1467967854_161148.png) 这是iphone上效果 ![图片说明](https://img-ask.csdn.net/upload/201607/08/1467967899_496514.png) 求大神指点

类似unity中树叶似的效果!

## # unity修改shader过滤蓝色并使蓝色部分透明 正在弄个把摄像头实时拍摄到的环境渲染到unity中的片上,去除环境中的蓝色部分并使其透明,蓝色滤掉后再弄透明的时候整个片都透明了,怎么修改alpha使其只让蓝色滤掉并透明其他部分正常显示呢,类似unity中树叶似的效果!

shader顶点程序中,UV信息不来自纹理坐标集,而来自输出pos的换算,求分析原因!

v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//投影空间坐标 #if UNITY_UV_STARTS_AT_TOP float scale = -1.0; #else float scale = 1.0; #endif o.uv.xy = (float2(o.pos.x, o.pos.y*scale) + o.pos.w) * 0.5; o.uv.zw = o.pos.zw; return o; } float4 frag (v2f i) : COLOR { // 对_GrabTexture纹理进行取样,进行2D纹理映射查找,后面传入的一定要四元纹理坐标。 // UNITY_PROJ_COORD传入四元纹理坐标用于给tex2Dproj读取,但是多数平台上,返回一样的值。 // 【自动生成的纹理UV】类型是float4,使用如下方式进行2D纹理映射查找 //half4 texCol = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(i.uv)); // 也可以使用tex2D进行采样,但是【自动生成的纹理UV】时必须要除以w转为齐次坐标 float last_x = i.uv.x / i.uv.w; float last_y = i.uv.y / i.uv.w; // 好比将_GrabTexture平铺到屏幕,模型出现的地方才显示 half4 texCol = tex2D(_GrabTexture, float2(last_x, last_y)); // 颜色反相,便于观察效果 return 1 - texCol; } 上面是一段shader的顶点程序,通常情况o.uv等于纹理坐标集,但是这里是来自顶点的换算。 o.pos输出的是剪裁坐标,最后的效果好像是主材质直接贴到屏幕上,而显示模型的地方才显示纹理。我不是很清楚其中的原理。求大神们解释一下?

关于Unity GL画图被UI遮挡的问题

![图片说明](https://img-ask.csdn.net/upload/201906/05/1559727242_54646.png) 下面是代码,目的是点击按钮之后再开始画线,可是画的线会被其他UI给中的挡住,我这里该如何修改?请各位看一下,麻烦了 ``` using UnityEngine; using UnityEngine.UI; public class TestLine : MonoBehaviour { public static Material lineMaterial; public Material tmpMaterial; Button tmp; bool isPaint = false; private void Awake() { tmp = GetComponent<Button>(); tmp.onClick.AddListener(TmpOnClick); } private void TmpOnClick() { isPaint = !isPaint; } static void CreateLineMaterial() { if (!lineMaterial) { // Unity has a built-in shader that is useful for drawing // simple colored things. Shader shader = Shader.Find("Hidden/Internal-Colored"); lineMaterial = new Material(shader); lineMaterial.hideFlags = HideFlags.HideAndDontSave; // Turn on alpha blending lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); // Turn backface culling off lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); // Turn off depth writes lineMaterial.SetInt("_ZWrite", 10); } } public void OnRenderObject() { if (isPaint) { CreateLineMaterial(); //第几个pass渲染 lineMaterial.SetPass(0); //矩阵压栈 GL.PushMatrix(); //将顶点从local坐标系转换成世界坐标系 GL.MultMatrix(transform.localToWorldMatrix); //将透视投影改成正交投影 GL.LoadOrtho(); //开始画线 GL.Begin(GL.LINES); DrawLines(); //结束画线 GL.End(); //矩阵出栈 GL.PopMatrix(); } } public void DrawLines() { GL.Color(Color.red); GL.Vertex(Camera.main.ScreenToViewportPoint(transform.position)); GL.Vertex(Camera.main.ScreenToViewportPoint(transform.GetChild(0).position)); //GL.Vertex(Camera.main.ScreenToViewportPoint(transform.position)); Vector3 tmp= Camera.main.ScreenToViewportPoint(transform.position); Vector3 result = Camera.main.ScreenToViewportPoint(transform.GetChild(0).position); Vector3 tmp1 = new Vector3(tmp.x , tmp.y+0.01f, 0); Vector3 result1= new Vector3(result.x , result.y+0.01f, 0); GL.Vertex(tmp1); GL.Vertex(result1); //Vector3 tmp2= new Vector3(tmp.x -0.1f, tmp.y, 0); //Vector3 result2= new Vector3(result.x - 0.1f, result.y, 0); //GL.Vertex(tmp2); //GL.Vertex(result2); } } ```

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

如何在虚拟机VM上使用串口

在系统内核开发中,经常会用到串口调试,利用VMware的Virtual Machine更是为调试系统内核如虎添翼。那么怎么搭建串口调试环境呢?因为最近工作涉及到这方面,利用强大的google搜索和自己

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

北京师范大学信息科学与技术学院笔试10复试真题

北京师范大学信息科学与技术学院笔试,可以更好的让你了解北师大该学院的复试内容,获得更好的成绩。

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

Tomcat服务器下载、安装、配置环境变量教程(超详细)

未经我的允许,请不要转载我的文章,在此郑重声明!!! 请先配置安装好Java的环境,若没有安装,请参照我博客上的步骤进行安装! 安装Java环境教程https://blog.csdn.net/qq_40881680/article/details/83585542 Tomcat部署Web项目(一)·内嵌https://blog.csdn.net/qq_40881680/article/d...

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

[已解决]踩过的坑之mysql连接报“Communications link failure”错误

目录 前言 第一种方法: 第二种方法 第三种方法(适用于项目和数据库在同一台服务器) 第四种方法 第五种方法(项目和数据库不在同一台服务器) 总结 前言 先给大家简述一下我的坑吧,(我用的是mysql,至于oracle有没有这样的问题,有心的小伙伴们可以测试一下哈), 在自己做个javaweb测试项目的时候,因为买的是云服务器,所以数据库连接的是用ip地址,用IDE开发好...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

期末考试评分标准的数学模型

大学期末考试与高中的考试存在很大的不同之处,大学的期末考试成绩是主要分为两个部分:平时成绩和期末考试成绩。平时成绩和期末考试成绩总分一般为一百分,然而平时成绩与期末考试成绩所占的比例不同会导致出现不同

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

c语言项目开发实例

十个c语言案例 (1)贪吃蛇 (2)五子棋游戏 (3)电话薄管理系统 (4)计算器 (5)万年历 (6)电子表 (7)客户端和服务器通信 (8)潜艇大战游戏 (9)鼠标器程序 (10)手机通讯录系统

相关热词 c# dbml文件 修改 c#遍历tree c# 能够控制单片机 c#对象写入数据库 c# 添加activex c#2005 json c# 数据库在云端 c# 字符串移位加密 c#禁用滚轮 c#实体类list去重复
立即提问