标签: shader

Vulkan - 读取缓冲区中浮点着色器颜色值到 uchar 值的奇怪映射

我知道着色器中的浮点颜色值范围 [0..1] 映射到 UCHAR 缓冲区中的 [0..255] 范围。

据此,我预计 UCHAR 缓冲区中的每次更改的着色器颜色值的步长为 1/255。

但结果却出人意料地不同。这是前两个步骤:

Shader 中的红色浮点值 -> 读取缓冲区中的 UCHAR 值

0.000000 -> 0

0.002197 -> 0

0.002198 -> 1

0.006102 -> 1

0.006105 -> 2

前两个步长约为 0.002197 和 0.006102,与预期步长 0.00392 和 0.00784 不同。

那么映射公式是什么呢?

shader colors vulkan

0
推荐指数
1
解决办法
659
查看次数

我的 Unity 着色器上的 Alpha 通道无法正常工作

所以我对着色器编程非常陌生(基本上今天才开始),我从 Youtube 上的教程中获得了这段代码,效果很好。它只是找到纹理边缘的像素,如果是,则将其替换为纯色。我希望能够设置我返回的颜色的透明度。

但它似乎不起作用

Shader "Custom/OutlineShader"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Color("Color", Color) = (1, 1, 1, 1)
        _AlphaOffset("Transparency", Range(0,1)) = 1
    }
    SubShader
    {
        Tags{ "Queue"="Transparent" "RenderType"="Opaque"}
        Cull Off ZWrite Off ZTest Always

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag Lambert alpha

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };


            fixed4 _Color;
            sampler2D _MainTex;
            float4 …
Run Code Online (Sandbox Code Playgroud)

shader unity-game-engine

0
推荐指数
1
解决办法
7499
查看次数

着色器创建Opengl

我在Youtube上使用OpenGl 3和BennyBox的教程.

使用此方法:

static void CheckShaderError(GLuint shader, GLuint flag, bool isProgram, const std::string& errorMessage){
    GLint success = 0;
    GLchar error [1024] = {0};

    if(isProgram){
        glGetProgramiv(shader, flag, &success);
    }else{
        glGetShaderiv(shader, flag, &success);
    }
    if(success == GL_FALSE){
        if(isProgram){
            glGetProgramInfoLog(shader, sizeof(error), NULL, error);
        }else{
            glGetShaderInfoLog(shader,sizeof(error), NULL, error);
        }
        std::cerr<< errorMessage<< ": " << error<< "'"<<std::endl; 
    }
} 
Run Code Online (Sandbox Code Playgroud)

我应该能够加载着色器文件(片段和顶点着色器).它适用于基本着色器,但是当我尝试将它们修改为该点时:

#version 120

attribute vec3 position;
attribute vec2 texCoord;

varying vec2 texCoord;

void main(){
    gl_Position = vec4(position, 1.0);
    texCoord0 = texCoord;
}
Run Code Online (Sandbox Code Playgroud)

我得到:

Error compiling shader!: …
Run Code Online (Sandbox Code Playgroud)

opengl shader

-1
推荐指数
1
解决办法
525
查看次数

我正在尝试修改 Unity 中的着色器,但收到“‘自定义/子空间外观’中的着色器错误:第 82 行(在 d3d11 上)无法识别的标识符‘输入’”?

我想立即声明我不经常使用着色器,而我正在使用的基本着色器 - 来自 Unity 论坛中的一个线程的力场着色器,是一个更旧的版本。然而,原来的“几乎”做了我想要的。

我想修改它以添加滚动效果以模拟速度,但奇怪的是我得到了“无法识别的标识符‘输入’”。IN Input 是一个普通变量.. 据说,在 Unity 的着色器中。到目前为止,这是我的代码:

Shader "Custom/SubspaceLook" {

Properties {
   _Color ("Main Color", Color) = (1,1,1,0.5)
   _MainTex ("Texture", 2D) = "white" {}
   _UVScale ("UV Scale", Range (0.05, 4)) = 1
   _UVDistortion ("UV Distortion", Range (0.01, 1)) = 0.5
   _Rate ("Oscillation Rate", Range (5, 200)) = 10
   _Rate2 ("Oscillation Rate Difference", Range (1, 3)) = 1.43
   _ZPhase ("Z Phase", Range (0, 3)) = 0.5
   _Scale ("Scale", Range (0.02, 2)) = 0.5
   _Distortion ("Distortion", Range (0, …
Run Code Online (Sandbox Code Playgroud)

shader unity-game-engine

-1
推荐指数
1
解决办法
4249
查看次数

OpenGL indicesBuffer值得使用吗?

我目前正在学习用于3D渲染的OpenGL,我无法完全了解有关着色器和VBO的一些事情,我得到所有VBO共享一个索引,因此您需要复制一些数据

但是当你创建更多的VBO时,几乎没有具有共享相同位置法线和纹理坐标的顶点的面,所以索引至少从我的观点来看是相当无用的,它基本上只是一个连续数字的数组.

是否有一个方面的指数我看不到?

opengl shader

-1
推荐指数
1
解决办法
131
查看次数

如何通过轨迹效果实现移动线

在下面的演示中画这样的线的想法是什么?绘制带有拖尾效果的单线可能很简单。但这些线路也在改变方向。

http://uber.github.io/deck.gl/#/examples/custom-layers/trip-routes

shader webgl

-3
推荐指数
1
解决办法
1248
查看次数

将顶点保存到纹理并传递到着色器

终于有时间玩着色器,但一时间卡住了.我想将顶点传递给着色器并在其上制作一些gpgpu.

Gpgpu工作正常,我猜是因为我看到几个像素,中间的一个被推到一边,因为我放入代码只是为了测试.

现在我想传递球体顶点.以下是我要采取的步骤.请指出错误:-)

编辑:小提琴添加 - 点击这里

1)创建几何体,并将其传递给数据数组.

geometry = new THREE.SphereGeometry( 0.2, 15, 15 );
console.log(geometry.vertices.length);
var a = new Float32Array(geometry.vertices.length * 4);
for(var k=0; k<geometry.vertices.length; k++) {
                a[ k*4 + 0 ] = geometry.vertices[k].x;
                a[ k*4 + 1 ] = geometry.vertices[k].y;
                a[ k*4 + 2 ] = geometry.vertices[k].z;
                a[ k*4 + 3 ] = 1;   
}
Run Code Online (Sandbox Code Playgroud)

2)将其保存在数据纹理中

posTexture[2] = new THREE.DataTexture(a, 16, 16, THREE.RGBAFormat, THREE.FloatType);
Run Code Online (Sandbox Code Playgroud)

3)设置'Set scene'(它应该将datatexture传递给它一次)setUniforms = {posTexture:{type:"t",value:posTexture [2]}};

var setMaterial = new THREE.ShaderMaterial({
    uniforms: setUniforms,
    vertexShader:   document.getElementById('setVert').textContent, …
Run Code Online (Sandbox Code Playgroud)

javascript shader textures three.js

-5
推荐指数
1
解决办法
1587
查看次数

将纹理添加到未点亮的透明色彩着色器

如何添加TextureOculus API提供的以下着色器以进行淡化:

Shader "Oculus/Unlit Transparent Color" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Texture", 2D) = "white" {} //  I added this property to apply Texture. Where can I use it?
}

SubShader {
    Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
    LOD 100
    Fog {Mode Off}
    Cull Off
    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha
    Color [_Color]

    Pass {}
}
}
Run Code Online (Sandbox Code Playgroud)

shader cg unity-game-engine oculus

-5
推荐指数
1
解决办法
2122
查看次数