Articles of 着色器

我有一个Unity插件,通过着色器生成噪声。 除了把它拖到网格上,我怎么能使用它?

我可能会问这个问题是错误的。 我正在使用湍stream库来产生噪声作为着色器。 我想要做的就是将这些着色器生成的噪声应用到我正在程序化生成的Texture2D中。 我想要做的是从噪声中获取每个像素的值,然后在程序生成纹理的同时,使用程序生成的网格中的另一种颜色“另一种颜色”来确定多less颜色。 我会张贴一个示例图片,但我不能这样做,因为我只能发布一个链接与我的声誉。 我强烈怀疑我只需要从头开始编写自己的着色器,但是没有办法从着色器中拾取噪声并将其应用到Texture2D,以便继续使用标准着色器?

如何知道我的照明着色器匹配着名的模型?

我有一些像lambert等着名模型的漫reflection和高光照明着色器。事情是,我怎么知道我的着色器实际上正在执行正确的公式? 我可以看到我的材料确实reflection光,但我怎么能确定我的公式匹配模型。 任何方式来testing这个?

3D模型呈现在半色调

我正在写一个3D渲染器,可以渲染3D模型,就好像它们是用半色调绘制的一样。 function明智我不需要任何花哨 – 没有颜色,只是纯粹的3D几何和基本的照明,就像这里: 图片来源: https : //blenderartists.org/forum/showthread.php?438820-Suzanne-Sketch 笔记: 过去我已经写了一个基本的3D渲染器,但是在着色器方面我真的缺乏经验(再次,我知道基础知识),我完全不知道从哪里开始。 示例图像已在Blender中创建,但是我正在编写自定义渲染器。 这不是“ 我怎样才能使着色效果看起来像铅笔素描? ”,因为我的input是一个3D模型,而链接的问题中的OP使用了一个图像。

Unity:Shader Outlined / Uniform使用undefined队列:'Geometry + 1'

我的轮廓着色器工作正常,但突然间开始抛出这个错误。 游戏在编辑器中仍然可以正常工作,但是当我尝试构建它时,卡在步骤上: 打包资产 – sharedassets0.assets 这是我的着色器: Shader "Outlined/Uniform" { Properties { _Color("Main Color", Color) = (0.5,0.5,0.5,1) _MainTex ("Texture", 2D) = "white" {} _OutlineColor ("Outline color", Color) = (0,0,0,1) _OutlineWidth ("Outlines width", Range (0.0, 2.0)) = 1.1 } CGINCLUDE #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; }; struct v2f { float4 pos : POSITION; […]

为什么Monogame模型与效果绑定?

当我使用ContentManager在Monogame中加载模型时,模型包含每个网格上的效果( mesh.Effects )。 这让我感到困惑,因为模型似乎与其渲染直接相关,而不是作为独立的3D模型存在。 此外,这使得在代码中应用自定义效果更加困难,因为我已经遍历每个ModelMeshPart并分配了效果。 与2D的比较将是包含它自己的SpriteBatch设置的Texture2D ,这是没有意义的。 为什么模型与效果绑定在一起,我怎样才能将它们分开?

等轴测图 – 我需要为精灵图像本身添加阴影,还是在运行时渲染阴影?

所以我现在正在为我的游戏世界画精灵。 这将是等距的,而不是可旋转的2.5维。 我现在需要在阴影中join我的精灵(这意味着根据阴影角度每个精灵会有5〜6个变化),还是我在运行时会随着光源在游戏中的变化而这样做? 例如:说我从一个瓷砖组画出来的。 View post on imgur.com 水平贴图( https://imgur.com/a/2pnK4 )在墙的顶部和墙的底部重复使用。 但是由于原因,南侧在墙的底部更轻。 我想知道是否最好制作2个不同的图像或通过编码使颜色变暗。 谢谢。

具有3D材质属性取决于着色器

免责声明:我很抱歉,如果这是一个重复的问题或不清楚。 我正在使用OpenGL规范在C ++中编写3D场景渲染器/编辑器。 考虑到我过去的经验(其实都没有),但实际上却令人吃惊,但是我在材料devise方面遇到了障碍。 首先,这是他们现在的工作方式: 材质具有漫reflection/反照率贴图,正常/凹凸贴图和高光贴图。 它们还具有漫reflection/反照率颜色,以及在没有提供镜面reflection图时的shiny度值。 这工作正常,所有我注意到Unity的材质属性完全取决于着色器。 这几乎是我想要的,因为这是非常灵活的。 我知道你可以得到这里描述的着色器程序的GLSL制服的列表,但我正在努力与我的材料类应该看起来像。 我是否有每种材料都保存有纹理,颜色和花车的地图,其中的关键字是他们的GLSL统一名称? 还是有更好的更优雅的方式? 我反对这个的原因是因为我不知道如何组织GUI中的属性,当我给出的是一个统一的名称。 例如,我可能会有多个漫reflection或镜面reflection的地图,我希望将这些地图安排在特定的庄园中。 请让我知道这是一个可怕的问题,或者如果我能以任何方式改善它。 我的脑子现在好痛

从多variables函数计算正确的法向

我正在使用一个平面模型,通过使用函数来抵消上轴上的顶点看起来像波浪: Sin(vertex.x * frequency)*幅度+ Cos(顶点.y *频率)*幅度 以前,我只用一个variables做了这个,通过得到导数,从中得到切线方向,并得到与切线垂直的方向,从而得到我的法线方向,从而能够确认我的法线方向是正确的。 然后,我把他们翻过来让他们面对正确的道路。 现在我已经添加了第二个variables,我试图采取类似的方法。 我在哪里取两个偏导数,得到每个的切线方向,从中得到每个的正常值,然后将法线加起来得到我的最终法线方向。 但是,我得到的结果似乎不同于统一计算的结果,这是正确的。 以下是将我的结果与正确的Unity计算进行比较的图像: 有没有人知道我的错在哪里我的计算? 我认为这可能与我正在进行正常化的时间和地点有关,但是我已经testing了很多不同的选项,似乎无法使其看起来正确,现在正在质疑我的两种法线结合的方法是错误的。 感谢您的任何意见。 下面是我用来做这个的代码的一个片段。 offsetAmount = Mathf.Sin(vertices[i].x * _Frequency) * _Amplitude + Mathf.Cos(vertices[i].y * _Frequency) * _Amplitude; private void DifferentiateNormals() { // Loop through every normal and calculate it manually for (int i = 0; i < vertices.Length; i++) { // The derivative […]

改变Three.js中不同网格的着色值

嘿,我正在为Three.js写Shader。 我的目标是让多个对象具有相同的着色器,并且每个对象都应该在该对象上设置一个颜色,然后将颜色设置给着色器。 目标是拥有多个“单元”(想一下RTS游戏),每个单元都有团队的颜色。 我通过几个文档页红色,我不知道如何处理。 我查看了https://threejs.org/docs/#api/materials/ShaderMaterial 。 我努力了: 改变uniform但从我有限的知识和反复试验中得出的结论是,我不能在抽奖期间改变统一的价值。 改变onBeforeRender中的制服,这给了我一个没有定义v的错误 我不知道现在该怎么办。 在ShaderMaterial文档中写道: 建议您根据Object3D.onBeforeRender中的对象和相机更新自定义统一值,因为材质可以在网格中共享,Scene和Camera的matrixWorld在WebGLRenderer.render中更新,而某些效果(例如:VREffect)渲染场景私人自己的相机。 所以我只是改变了错误的价值观,它实际上是一个统一的改变? 在这个Github的问题有人想用不同的颜色绘制网格,并建议为每个网格创建不同的材料( https://github.com/mrdoob/three.js/issues/1532 )。 但是,这会杀死每个单元有一个着色器的想法,不管团队。

OpenGL – 使用立方体贴图时调整贴图的大小

我想调整我的纹理。 我正在使用立方体贴图来计算reflection。 我想用这个立方体贴图来绘制天空盒。 Skybox被绘制,但我想调整纹理下来,因为它是扩张。 正如我在我以前的问题( 问题 )中写的,绘制天空盒我使用着色器: //vertex shader uniform mat4 modelViewMatrix; uniform mat4 projectionMatrix; attribute vec4 position; varying mediump vec4 texCoord; void main() { texCoord = position; gl_Position = projectionMatrix * modelViewMatrix * position; } //fragment shader uniform samplerCube Sampler; varying mediump vec4 texCoord; void main() { mediump vec3 cube = vec3(textureCube(Sampler, texCoord.xyz)); gl_FragColor […]