草庐IT

geometry-shader

全部标签

Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板

写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

javascript - Three.js: Resize rendering canvas (GPU hungry fragment shader)

我正在使用three.js运行资源匮乏的片段着色器。我已将渲染大小设置为800*600,以保持着色器即使在低端卡上也能流畅运行。我正在这样设置我的渲染Canvas:varcanvas1=document.getElementById('canvas1');renderer=newTHREE.WebGLRenderer(canvas1);renderer.setSize(800,600);renderer.autoClear=false;document.body.appendChild(renderer.domElement);在body元素上我有然后我在cssheader中做widt

javascript - Three.js - 如何反序列化 geometry.toJSON()? (geometry.fromJSON 在哪里?)

我正在尝试将一些Geometry加载和处理卸载到webworker中。要将其发送回主线程,需要对Geometry实例进行序列化,而且Geometry.prototype.toJSON()似乎正是用于此类事情.但我不知道如何在主线程中将该对象变回Geometry实例。应该如何使用toJSON()输出?PS:我看过thisrelatedquestion,但它似乎过时了。toJSON()还没有在API中。接受的答案有点令人费解,并且需要我仍然在主线程中做一些原始工作。 最佳答案 如果我理解正确,问题是:您有一个要作为几何体(obj、STL

javascript - 三个js合并Geometries和Mesh

三个jsver67当前代码是这样的-varmaterials=[];vartotalGeom=newTHREE.Geometry();varcubeMat;for(vari=0;i但是我收到了消息已弃用:GeometryUtils的.merge()已移至Geometry。请改用geometry.merge(geometry2,matrix,materialIndexOffset)。在chrome开发工具中。当我尝试类似-totalGeom.merge(cubeMesh.geometry,cubeMesh.geometry.matrix);而不是THREE.GeometryUtils.m

javascript - 将颜色渐变应用于网格上的 Material - three.js

我将一个STL文件加载到我的场景中,并将单一颜色应用于phongMaterial我想要一种将两种颜色应用到此网格Material的方法,并在Z轴上应用渐变效果,如下例所示。GradientVase]1我觉得我可能必须引入着色器,但我对three.js还没有做到这一点。 最佳答案 简单的渐变着色器,基于uvs:varscene=newTHREE.Scene();varcamera=newTHREE.PerspectiveCamera(60,1,1,1000);camera.position.set(13,25,38);camera.l

javascript - 将 GeometryUtils.merge() 迁移到 geometry.merge()

从r66迁移到r67我收到消息:DEPRECATED:GeometryUtils's.merge()hasbeenmovedtoGeometry.Usegeometry.merge(geometry2,matrix,materialIndexOffset)instead.它似乎不是直接转换,因为旧代码看起来是这样的:THREE.GeometryUtils.merge(cgeo,cloudgeometry);我尝试了以下方法:cgeo.merge(cloudgeometry.geometry,cgeo.matrixWorld);编辑,还尝试了以下产生与上述相同结果的方法:cgeo.mer

unity-shader(入门)

目录1.简介1.概述2.详解3.测试总结:2.UnityShader1.简介2.各种坐标1.模型坐标2.世界坐标3.视图坐标4.裁剪坐标3.UnlitShader的基本结构4.SurfaceShader介绍5.Unityshader中属性的类型6.SubShader块的基本组成1.Tags:标签可选项2.Render设置3.Pass通道:7.CGPROGRAM1.pragma2.用语意来将值、输入与输出关联到某个值中3.可用的函数方法4.可用的静态变量5.结构体6.特殊语句7.引入**cginc**Shader库8.调试工具9.平台差异-.Unity的一些基础shader3.Cg语言1.Cg编

Unity Shader: multi_compile一个文件变幻多个shader

multi_compile我们在写shader时,经常会出现同一个shader在面对不同的一些需求时,可能需要出现一些局部的变化,比如有些地方需要描边,有些地方不需要描边,由于在shader中不适合使用if,所以最好就是再写一份shader,但我们肯定不想复制一个shader改改,毕竟有很多共用的部分,万一修改了,岂不是两边都要改,而且shader多了也不方便使用。这个时候就需要用到shader变体了,只需要写一个shader,在编译的时候会自动生成多个对应shader使用,这样子就完美的解决了我们的问题。拥有多种变体的shader一般称为"megashaders"或者"ubershaders

【Shader 属性_开发注意事项_第三篇】

Properties_Int(“Int”,Int)=1类型:整型Cg/HLSL:int取决于在Cg/HLSL中是用float还是int来声明的,如果定义为float则实际使用的就是浮点数,字义为int会被识别为int类型(去小数点直接取整)_Float(“Float”,Float)=0类型:浮点数值Cg/HLSL:可根据需要定义不同的浮点精度float32位精度,常用于世界坐标位置以及UV坐标half范围[-6W,6W],常用于本地坐标位置,方向等fixed范围[-2,2],常用于纹理与颜色等低精度的情况_Slider(“Slider”,Range(0,1))=0类型:数值滑动条本身还是Flo

Unity中的Compute Shader

Unity中的ComputeShader前言一、定义二、创建三、computer代码解析四、c#调用方式五、计算关系六、平台支持七、引用前言游戏开发中,dot编程在处理大数量级的运算应用已经越来越广泛了,而GPU本身对大规模数据的并行计算已经越来越强了,因此现在许多游戏处理大量物体的计算可以利用GPU这一特性,加快并发计算速度,ComputeShader就是专门利用这一特性的。提示:以下是本篇文章正文内容一、定义ComputeShader是在GPU上并位于正常渲染管线之外运行的程序。一个ComputeShader是一个着色阶段,完全可用于计算任意信息。虽然它可以进行渲染,但通常用于与绘制三角形