คำถามติดแท็ก glsl

ภาษาการเขียนโปรแกรมสำหรับ OpenGL shaders

1
GLSL ทั้งหมดในโปรแกรม shader เดียวหรือหลายโปรแกรม?
ฉันกำลังสาธิตการใช้งาน 3D โดยใช้ OpenGL และฉันสังเกตว่า GLSL นั้นค่อนข้าง "จำกัด " (หรือเป็นแค่ฉันเอง) อย่างไรก็ตามฉันมีวัสดุหลายประเภท วัสดุบางอย่างมีสีโดยรอบและกระจายวัสดุบางอย่างมีแผนที่บดเคี้ยวโดยรอบบางคนมีแผนที่ specular และชนแผนที่ ฯลฯ มันจะดีกว่าที่จะสนับสนุนทุกอย่างในหนึ่งคู่ยอด / ชิ้นส่วนแยกหรือดีกว่าที่จะสร้างยอดยอดหลายชิ้นและเลือกพวกเขาขึ้นอยู่กับวัสดุที่เลือกในปัจจุบัน? กลยุทธ์ shader ทั่วไปใน OpenGL หรือ D3D คืออะไร
17 opengl  3d  shaders  glsl 

2
OpenGL: VBO หรือ glBegin () + glEnd ()?
ฉันเพิ่งได้รับลิงก์นี้ไปยังไซต์การสอนจากคนที่ฉันให้ OGL Redbook ดั้งเดิมแก่ ส่วนหัวที่สามลงกล่าวอย่างชัดเจนว่าลืม glBegin () & glEnd () เป็นวิธีการเรนเดอร์ทั่วไป ฉันเรียนรู้ผ่านวิธีของ Redbook แต่ฉันเห็นประโยชน์บางอย่างใน VBOs นี่เป็นวิธีที่จะไปจริงๆหรือไม่และถ้าเป็นเช่นนั้นมีวิธีในการแปลงรหัสการเรนเดอร์และเฉดสีที่ตามมาให้เป็น VBOs และประเภทข้อมูลที่ตามมาหรือไม่?
16 opengl  graphics  glsl  vbo 

2
มีผู้สืบทอดต่อ RenderMonkey หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเริ่มต้นกับการเขียนโปรแกรม GLSL Shader และได้รับการมองเข้าไปในRenderMonkey น่าเศร้าที่ AMD ไม่สนับสนุนอีกต่อไป ทำไม? มีผู้สืบทอดหรือไม่
16 shaders  glsl 

2
ตูน / cel แรเงาที่มีความกว้างของเส้นตัวแปร?
ฉันเห็นแนวทางกว้าง ๆ สองสามข้อเพื่อทำการแรเงา cel: การทำซ้ำและการขยายรูปแบบด้วยบรรทัดฐานพลิก (ไม่ใช่ตัวเลือกสำหรับฉัน) Sobel filter / fragment shader เข้าใกล้การตรวจจับขอบ บัฟเฟอร์ของลายฉลุเข้าหาการตรวจจับขอบ วิธีการ Shader ของเรขาคณิต (หรือจุดสุดยอด) ที่คำนวณบรรทัดฐานใบหน้าและขอบ ฉันถูกต้องหรือไม่ถ้าสมมติว่าวิธีเรขาคณิตเป็นศูนย์กลางช่วยให้สามารถควบคุมปริมาณแสงและความหนาของเส้นได้มากที่สุดเช่นกัน สำหรับภูมิประเทศที่คุณอาจเห็นแนวเงาของเนินเขาค่อยๆรวมกันเป็นที่ราบ ถ้าฉันไม่ต้องการแสงพิกเซลบนพื้นผิวภูมิประเทศของฉันล่ะ (และฉันอาจจะไม่เป็นอย่างที่ฉันวางแผนที่จะใช้แสง / เงาบนพื้นผิวที่ใช้กับเซลล์ / แรปแมป) - ฉันจะดีกว่าหากใช้วิธีเรขาคณิต - หรือดีกว่าสำหรับพื้นที่หน้าจอ / ชิ้นส่วนแทน การทำให้สิ่งต่าง ๆ ง่ายขึ้น? ถ้าเป็นเช่นนั้นฉันจะได้รับ "หมึก" ของเนินเขา ในภาพเงาตาข่ายแทนที่จะเป็นเพียงโครงร่างของตาข่ายทั้งหมด (โดยไม่มีรายละเอียด "หมึก" ภายในโครงร่างนั้น) ( รูปทรงที่มีการชี้นำของ AKA , รอยย่น ) สุดท้ายเป็นไปได้ไหมที่จะเลียนแบบวิธีการพลิก - …

1
การนำ skybox ไปใช้กับ GLSL เวอร์ชัน 330
ฉันกำลังพยายามให้สกายบ็อกซ์ทำงานกับ OpenGL 3.3 และ GLSL เวอร์ชัน 330 ฉันไม่สามารถค้นหาการสอน OGL skybox ที่ทันสมัยได้อย่างสมบูรณ์ที่ใดก็ได้บนเว็บดังนั้นฉันจึงทำให้รุ่นเก่า (ใช้glVertexAttribPointer()แทนgl_Vertexจุดยอดเป็นต้น) ส่วนใหญ่ใช้งานได้ แต่สำหรับ 2 รายละเอียดหลัก กล่องสกายนั้นเหมือนรูปสามเหลี่ยมบนท้องฟ้าและพื้นผิวนั้นบิดงอไม่ดีและยืดออก (มันควรจะเป็นทุ่งหญ้าดาวฉันได้รับขณะที่เส้นบนพื้นหลังสีดำ) ฉันแน่ใจ 99% ว่านี่เป็นเพราะฉันไม่ได้ทำการสอนแบบเก่าอย่างสมบูรณ์ นี่คือคลาส skybox ของฉัน: static ShaderProgram* cubeMapShader = nullptr; static const GLfloat vertices[] = { 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, …
14 c++  opengl  glsl  cubemap  skybox 

2
GLSL Shader - เปลี่ยน Hue / Saturation / Brightness
ฉันพยายามเปลี่ยนเฉดสีของภาพโดยใช้ตัวแยกส่วน GLSL ฉันต้องการบรรลุสิ่งที่คล้ายกับเลเยอร์ Hue / Saturation Adjustment ของ Photoshop ในภาพต่อไปนี้คุณสามารถเห็นสิ่งที่ฉันได้รับจนถึง ฉันต้องการเปลี่ยนสีของสี่เหลี่ยมสีเขียวเพื่อให้ดูเหมือนว่าสี่เหลี่ยมสีแดงด้านขวา แต่ด้วย shader นี้ฉันได้ครึ่งสี่เหลี่ยมสีชมพูครึ่งสีแดง (สี่เหลี่ยมตรงกลาง) สิ่งที่ฉันทำในตัวแบ่งส่วนคือการแปลงสีของพื้นผิวเป็น HSV จากนั้นฉันเพิ่มสี HSV ที่ฉันได้รับจากจุดยอดสุดยอดไปยังมันและฉันแปลงสีกลับเป็น RGB ผมทำอะไรผิดหรือเปล่า? ชิ้นส่วน shader: precision mediump float; varying vec2 vTextureCoord; varying vec3 vHSV; uniform sampler2D sTexture; vec3 convertRGBtoHSV(vec3 rgbColor) { float r = rgbColor[0]; float g = rgbColor[1]; float b …

1
ฉันควรกระจายเฉดสีในรูปแบบที่คอมไพล์หรือเป็นข้อความธรรมดาหรือไม่?
หากมีแอปพลิเคชันที่ใช้ตัวแปลงแสงที่เขียนไว้ใน GLSL กลยุทธ์ที่ดีที่สุดสำหรับการเผยแพร่ในโลกแห่งความเป็นจริงคืออะไรและสำหรับเดสก์ท็อปและมือถือ ฉันมุ่งที่จะเผยแพร่สิ่งนี้ในรูปแบบไบนารีหรือเป็นข้อความธรรมดาต่อเนื่องฉันขอคำแนะนำที่ดีเกี่ยวกับเรื่องนี้

4
การดีบักรหัส Shader หรือไม่
ฉันเขียนโปรแกรมเกมและเมื่อฉันใช้กล้องเปอร์สเปคทีฟฉันจะได้หน้าจอสีดำ ฉันจะไม่ถามว่าทำไมถึงเป็นเช่นนี้เพราะจะมีรหัสจำนวนมากที่จะแบ่งปันและตรงไปตรงมาฉันคิดว่านั่นเป็นคำถามที่เล็กน้อยมากแม้แต่จะรบกวนคุณด้วย ปัญหาคือฉันไม่รู้วิธีแก้จุดบกพร่อง การเปลี่ยนแปลงทั้งหมดนั้นคือเมทริกซ์การฉายของฉันและถ้าเมทริกซ์การฉายของฉันดูดีฉันไม่รู้ว่าทำไมมันไม่ทำงาน ฉันควรจะพิมพ์ค่าของสิ่งต่าง ๆ ตามที่ shader ทำการคำนวณ แต่ GLSL ไม่สะดวกไม่มีฟังก์ชัน printf () ดังนั้นคำถามของฉันคือฉันจะแก้ปัญหาได้อย่างไร สิ่งเดียวที่ฉันคิดได้ก็คือการตรวจสอบค่ามากที่สุดเท่าที่ฉันสามารถฝั่งไคลเอ็นต์แล้วเขียนโปรแกรมโดยการเปลี่ยนแปลง แต่ฉันได้ทำไปแล้วและไม่มีที่ไหนเลย มีวิธีที่ฉันเห็นสิ่งที่เกิดขึ้นในการ์ดวิดีโอหรือไม่? มีเทคนิคที่แตกต่างอย่างสิ้นเชิงที่ฉันสามารถใช้ได้หรือไม่? ฉันใช้ GLSL เวอร์ชัน 420 (และฟีเจอร์เฉพาะสำหรับรุ่นนั้น) ดังนั้นฉันจึงไม่คิดว่า glslDevil เป็นตัวเลือกเนื่องจากพิจารณาว่าได้รับการอัปเดตครั้งล่าสุดในปี 2010 แก้ไข ฉันจัดการเพื่อแก้ปัญหาของฉันผ่านการดีบักที่ไม่เกี่ยวข้องอย่างสมบูรณ์

1
OpenGL / GLSL: แสดงแผนที่เป็นคิวบ์หรือไม่
ฉันพยายามหาวิธีทำให้ฉากของฉันเป็นแผนที่ลูกบาศก์ ฉันติดอยู่กับเรื่องนี้และคิดว่าฉันจะขอความช่วยเหลือจากพวกคุณ ฉันใหม่กับ OpenGL และนี่เป็นครั้งแรกที่ฉันใช้ FBO ขณะนี้ฉันมีตัวอย่างการทำงานของการใช้ไฟล์ cubemap bmp และประเภทตัวอย่าง samplerCube ใน shader ที่ต่อกับ GL_TEXTURE1 ฉันไม่ได้เปลี่ยนรหัส shader เลย ฉันแค่เปลี่ยนความจริงที่ว่าฉันจะไม่เรียกฟังก์ชันที่โหลดไฟล์ cubemap bmp และพยายามใช้โค้ดด้านล่างเพื่อแสดงผลเป็น cubemap คุณสามารถเห็นด้านล่างว่าฉันยังแนบพื้นผิวอีกครั้งกับ GL_TEXTURE1 นี่คือเมื่อฉันตั้งเครื่องแบบ: glUniform1i(getUniLoc(myProg, "Cubemap"), 1); มันสามารถเข้าถึงได้ในส่วน Shader uniform samplerCube Cubemapของฉันผ่านทาง ฉันกำลังเรียกใช้ฟังก์ชันด้านล่างดังนี้: cubeMapTexture = renderToCubeMap(150, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); ตอนนี้ฉันรู้แล้วในลูปการวาดด้านล่างว่าฉันไม่ได้เปลี่ยนทิศทางมุมมองเพื่อดูแกน + x, -x, + y, -y, + z, …
13 opengl  glsl  cubemap 

4
มัลติเพลเยอร์ทำงานใน OpenGL อย่างไร
ใน Direct3D นั้น shader แบบหลายตัวนั้นใช้งานง่ายเพราะคุณสามารถกำหนด pass ภายในโปรแกรมได้อย่างแท้จริง ใน OpenGL ดูเหมือนว่าจะซับซ้อนกว่านี้เล็กน้อยเนื่องจากเป็นไปได้ที่จะให้โปรแกรม shader เป็นจุดสุดยอดรูปทรงเรขาคณิตและส่วนที่แตกต่างกันตามที่คุณต้องการ ตัวอย่างที่เป็นที่นิยมของเครื่องมัลติพลาสเดอร์คือเครื่องจิ้มอเนกประสงค์ การผ่านหนึ่งครั้งจะมีเอฟเฟ็กต์การแรเงาที่เกิดขึ้นจริงและอีกอันจะสร้างโครงร่าง ถ้าฉันมีสองจุดยอด "cel.vert" และ "outline.vert" และสองชิ้นส่วน "cel.frag" และ "outline.frag" (คล้ายกับที่คุณทำใน HLSL) ฉันจะทำได้อย่างไร รวมเข้าด้วยกันเพื่อสร้าง shader toon แบบเต็ม? ฉันไม่ต้องการให้คุณพูดว่าสามารถใช้รูปทรงเรขาคณิตสำหรับเรื่องนี้ได้เพราะฉันแค่อยากรู้ทฤษฎีที่อยู่เบื้องหลัง GLSL หลายตัว;)
13 opengl  shaders  glsl 

1
ไม่ได้ผลลัพธ์ที่ต้องการด้วยการใช้ SSAO
หลังจากนำการเรนเดอร์มาใช้แล้วฉันลองเสี่ยงโชคด้วยการใช้ SSAO โดยใช้บทช่วยสอนนี้ น่าเสียดายที่ฉันไม่ได้รับสิ่งที่ดูเหมือน SSAO คุณสามารถดูผลลัพธ์ของฉันด้านล่าง คุณสามารถเห็นได้ว่ามีลวดลายแปลก ๆ บางอย่างและไม่มีเงาบังแดดที่จะต้องมี (เช่นระหว่างวัตถุและบนพื้นดิน) เฉดสีที่ฉันติดตั้งมีดังนี้: #VS #version 330 core uniform mat4 invProjMatrix; layout(location = 0) in vec3 in_Position; layout(location = 2) in vec2 in_TexCoord; noperspective out vec2 pass_TexCoord; smooth out vec3 viewRay; void main(void){ pass_TexCoord = in_TexCoord; viewRay = (invProjMatrix * vec4(in_Position, 1.0)).xyz; gl_Position …

2
ฉันจะสร้าง Bloom Shader ที่มีประสิทธิภาพด้วย GLSL ได้อย่างไร
ฉันค้นหาสุทธิเพื่อหาแหล่งข้อมูลที่เกี่ยวข้องกับการแสดงผลบลูมโดยใช้ GLSL แต่ไม่พบอะไรเลย แม้ว่าบทช่วยสอนที่เว็บไซต์ของ Philip Rideoutนั้นดี แต่มันก็ทำงานได้ไม่ดีกับ Nvidia GPU ของฉัน ทุกคนสามารถแนะนำฉันเกี่ยวกับวิธีที่ฉันควรแก้ไขปัญหานี้และสร้างการใช้งานเอฟเฟกต์บานที่มีประสิทธิภาพอย่างเป็นธรรมหรือไม่?
12 shaders  glsl  bloom 

1
อนุพันธ์ของอวกาศสกรีนคืออะไรและเมื่อใดที่ฉันจะใช้
ฉันเห็นฟังก์ชั่นddxและddyglsl และการเทียบเท่า hlsl เกิดขึ้นในรหัส shader ทุก ๆ ครั้งแล้ว ขณะนี้ฉันกำลังใช้พวกมันเพื่อทำแผนที่ bump โดยไม่มีการแทนเจนต์หรือ bitangent แต่โดยทั่วไปฉันคัดลอกวางโค้ด ฉันไม่เข้าใจว่าฟังก์ชั่นเหล่านี้คืออะไรพวกเขาทำอะไรและเมื่อใดที่ฉันจะใช้มัน ดังนั้นคำถาม: ฟังก์ชันอนุพันธ์หน้าจอคืออะไร? ฟังก์ชั่นเหล่านี้ทำอะไร? ค่าอินพุตและค่าเอาต์พุต ลักษณะพิเศษใดที่ใช้บ่อยที่สุด เอฟเฟกต์ประเภทใดที่คุณต้องมองไปที่ฟังก์ชันเหล่านี้

1
GLSL - ประกาศตัวแปรโกลบอลนอกขอบเขตฟังก์ชั่นหลัก
ช่วยประกาศตัวแปรนอกขอบเขตหน้าที่หลักของคุณใน GLSL หรือไม่? ตัวแปรเหล่านี้กลับมาใช้ซ้ำได้จริงและมีประสิทธิภาพมากขึ้นหรือไม่ นี่คือรหัสคำถาม: varying vec2 vposition; uniform float seed; uniform float top; uniform float bottom; uniform float phi; uniform float theta; uniform float scaledPI; uniform float yn; uniform float ym; uniform float rx; uniform float ry; uniform float radius; const float PI = 3.141592653589793238462643383; float left; float right; …
12 glsl 

1
วิธีการใช้ ripples ชนิดนี้ด้วยตัวแยกส่วน GLSL?
ดังนั้นฉันจึงได้นำส่วนการสะท้อนกลับมาใช้แล้ว: uniform sampler2D texture; uniform vec2 resolution; uniform vec3 overlayColor; void main() { vec2 uv = gl_FragCoord.xy / resolution.xy; if (uv.y > 0.3)// is air - no reflection or effect { gl_FragColor = texture2D(texture, vec2(uv.x, uv.y)); } else { // Compute the mirror effect. vec4 color = texture2D(texture, vec2(uv.x, 0.6 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.